MyBatis整合Spring框架


1.1  整合思路

1、SqlSessionFactory对象应该放到spring容器中作为单例存在。

2、传统dao的开发方式中,应该从spring容器中获得sqlsession对象。

3、Mapper代理形式中,应该从spring容器中直接获得mapper的代理对象。

4、数据库的连接以及数据库连接池事务管理都交给spring容器来完成。

 

1.2  整合需要的jar

1、springjar

2、Mybatisjar

3、Spring+mybatis的整合包。

4、Mysql的数据库驱动jar包。

5、数据库连接池的jar包。


1.3  整合的步骤

第一步:创建一个java工程。

第二步:导入jar包。(上面提到的jar包)

第三步:mybatis的配置文件sqlmapConfig.xml

第四步:编写Spring的配置文件

1、数据库连接及连接池

2、事务管理(暂时可以不配置)

3sqlsessionFactory对象,配置到spring容器中

4mapeer代理对象或者是dao实现类配置到spring容器中。

第五步:编写dao或者mapper文件

第六步:测试。

1.3.1   SqlMapConfig.xml

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEconfiguration

PUBLIC"-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

     <typeAliases>

         <packagename="cn.itcast.mybatis.pojo"/>

     </typeAliases>

     <mappers>

         <mapperresource="sqlmap/User.xml"/>

     </mappers>

</configuration>


1.3.2   applicationContext.xml

<?xmlversion="1.0"encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

     xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"

     xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"

     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

 

     <!-- 加载配置文件 -->

     <context:property-placeholderlocation="classpath:db.properties"/>

     <!-- 数据库连接池 -->

     <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"

         destroy-method="close">

         <propertyname="driverClassName"value="${jdbc.driver}"/>

         <propertyname="url"value="${jdbc.url}"/>

         <propertyname="username"value="${jdbc.username}"/>

         <propertyname="password"value="${jdbc.password}"/>

         <propertyname="maxActive"value="10"/>

         <propertyname="maxIdle"value="5"/>

     </bean>

     <!-- mapper配置 -->

     <!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 -->

     <beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">

         <!-- 数据库连接池 -->

         <propertyname="dataSource"ref="dataSource"/>

         <!-- 加载mybatis的全局配置文件 -->

         <propertyname="configLocation"value="classpath:mybatis/SqlMapConfig.xml"/>

     </bean>

 

</beans>

 

1.3.3   db.properties

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8

jdbc.username=root

jdbc.password=root


1.4  Dao的开发

三种dao的实现方式:

1、传统dao的开发方式

2、使用mapper代理形式开发方式

3、使用扫描包配置mapper代理。

 

1.4.1   传统dao的开发方式

接口+实现类来完成。需要dao实现类需要继承SqlsessionDaoSupport

 

1.4.1.1 Dao实现类

publicclass UserDaoImpl extends SqlSessionDaoSupport implements UserDao {

 

     @Override

     public User findUserById(int id) throws Exception {

         SqlSession session = getSqlSession();

         User user = session.selectOne("test.findUserById", id);

         //不能关闭SqlSession,让spring容器来完成

         //session.close();

         return user;

     }

 

     @Override

     publicvoid insertUser(User user) throws Exception {

         SqlSession session = getSqlSession();

         session.insert("test.insertUser", user);

         session.commit();

         //session.close();

     }

}

 

1.4.1.2配置dao

dao实现类配置到spring容器中

<!-- 配置UserDao实现类 -->

     <beanid="userDao"class="cn.dao.UserDaoImpl">

         <propertyname="sqlSessionFactory"ref="sqlSessionFactory"/>

     </bean>

1.4.1.3 测试方法

@Test

     publicvoid testFindUserById() throws Exception {

         UserDao userDao = (UserDao) applicationContext.getBean("userDao");

         User user = userDao.findUserById(1);

         System.out.println(user);

     }

 

1.4.2Mapper代理形式开发dao

1.4.2.1开发mapper接口
1.4.2.2 配置mapper代理

<!-- 配置mapper代理对象 -->

     <beanclass="org.mybatis.spring.mapper.MapperFactoryBean">

         <propertyname="mapperInterface"value="cn.mybatis.mapper.UserMapper"/>

         <propertyname="sqlSessionFactory"ref="sqlSessionFactory"></property>

     </bean>

1.4.2.3        测试方法

publicclass UserMapperTest {

 

     private ApplicationContext applicationContext;

     @Before

     publicvoid setUp() throws Exception {

         applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");

     }

 

     @Test

     publicvoid testGetUserById() {

         UserMapper userMapper = applicationContext.getBean(UserMapper.class);

         User user = userMapper.getUserById(1);

         System.out.println(user);

     }

 

}

 

1.4.3   扫描包形式配置mapper

<!-- 使用扫描包的形式来创建mapper代理对象 -->

     <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">

         <propertyname="basePackage"value="cn.mybatis.mapper"></property>

     </bean>

每个mapper代理对象的id就是类名,首字母小写


  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值