欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2019年6月24日

程序员文章站 2024-03-24 20:29:34
...

MyBatis与Spring的整合

在学习Spring框架,今天的第一个博客

Spring在整合Batista时,需要依次完成并加载MyBatis配置信息、构建SqlSessionFactory和SqlSession实例,完成对业务逻辑对象的依赖注入等工作。
JAR包
mybatis-spring-2.0.1.jar
spring-jdbc-5.1.8.RELEASE.jar
spring-tx-5.1.8.RELEASE.jar

  • 一、配置数据源
    任何持久化解决方案,数据库连接都是首先要解决的问题。在Spring中,数据源作为一个重要组件可以单独进行配置和维护。
    我们使用Spring整合MyBatis可以Spring中配置数据源。在Spring中配置数据源。
    使用dbcp数据源进行配置。
    dbcp隶属于Apache Commons项目
    JAR包
    commons-dbcp-5.1.8.RELEASE.jar
    commons-pool-5.1.8.RELEASE.jar
    建立Spring配置文件

     <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
     <property name="driverClassName" value="com.mysql.jdbc.Driver" />
     <property name="url">
         <value><![CDATA[jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=utf-8]]></value>
     	</property>
     	<property name="username" value="root" />
     	<property name="password" value="root" />
     </bean>
    
  • 二、配置SqlSessionFactoryBean
    配置完数据源,就可以在此基础上集合SQL映射文件信息以及配置MyBatis文件中其他信息,和创建SqlSessionFactory实例。

     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
     	<property name="dataSource" ref="dataSource" />
     	<property name="configLocation" value="classpath:mybatis-config.xml" />
     	<property name="mapperLocations">
     		<list>
     			<value>classpath:cn/smbms/dao/**/*.xml</value>
     		</list>
     	</property>
     </bean>
    
  • 三、使用SqlSessionTemplate实现数据库的操作

    public class UserMapperImpl implements UserMapper {
        private SqlSessionTemplate sqlSession;
    
        public List<User> getUserList(User user) {
            return sqlSession.selectList("cn.test.UserMapper.getUserList",user);
        }
    
        public SqlSessionTemplate getSqlSession(){
            return sqlSession;
        }
    
        public void setSqlSession(SqlSessionTemplate sqlSession){
            this.sqlSession=sqlSession;
        }
    

}

创建SqlSessionTemplate实例时,需要通过其构造方法注入SqlSessionFactory实例。
这里引用的时前文配置过的id为sqlSessionFactory的Bean
与MyBatis中默认的SqlSession实现不同,SqlSessionTemplate时线程安全的,可以单例模式配置并被多个DAO对象共用,而不必为每个DAO单独配置一个SqlSessionTemplate实例。

<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
 </bean>
    <!-- 配置DAO组件并注入SqlSessionTemplate实例-->
  <bean id="userMapper" class="cn.smbms.dao.UserMapperImpl">
        <property name="sqlSession" ref="sqlSessionTemplate" />
  </bean>

业务类实现代码

 private UserMapper userMapper;//声明UserMapperFactoryBean接口引用

    public UserMapper getUserMapper() {
        return userMapper;
    }

    public void setUserMapper(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    public List<User> findUsersWithConditions(User user) {
        return null;
    }

测试代码

public void testSpringMybatis(){
        ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext-mybatis.xml");
        UserService userService=(UserService)ctx.getBean("userService");
        User userCond=new User();
        userCond.setUserName("赵公子");
        userCond.setUserRole(3);

        List<User> userList =new ArrayList<User>();
        userList = userService.findUsersWithConditions(userCond);

        for (User userResult:userList) {
            System.out.println(userResult.toString());
        }
    }
相关标签: 新手