Spring整合MyBatis总结

1.  分析MyBatis:

    MyBatis是通过SqlSessionFactory对象--------->产生SqlSession---------->产生Mapper-------->CRUD

2.  整合思路:

    分析可得,MyBatis是通过SqlSessionFactory对象来操作数据库,

    Spring整合MyBatis其实就是将MyBatis的SqlSessionFactory对象交给Spring去管理;

3.  整合步骤:

    1.  在pom.xml文件中添加所依赖的jar包(根据项目需要进行添加!)

      1.1  mybatis-spring.jar    1.6  spring-core.jar  2.1  commons-logging.jar

      1.2  spring-tx.jar(事务)    1.7  spring-context.jar   2.2  commons-jdbc.jar

      1.3  spring-jdbc.jar       1.8  spring-beans.jar   2.3  ojdbc.jar

      1.4  spring-expression.jar    1.9  spring-aop.jar    2.4  mybatis.jar

      1.5  spring-context-support.jar  2.0  spring-web.jar    2.5  log4j.jar  2.6  commons-pool.jar  

4.  类---表(实体类);

5.  MyBatis配置文件(config.xml);

6.  建立Mapper.xml文件,通过Mapper文件将【类----表】建立映射关系:

    之前使用MyBatis:我们通过config.xml配置文件------>产生SqlSessionFactory对象;

    现在我们整合的时候是通过Spring去管理SqlSessionFactory对象,因此产生SqlSessionFactory对象所需要的数据库信息不再放入config.xml,而需要放入Spring配置文件中去配置数据库信息;

7.  配置Spring配置文件(applicationContext.xml);

8.  使用Spring-MyBatis整合产物来开发程序:

    目标:通过spring产生Mybatis最终操作需要的动态mapper对象(studentMapper)

    8.1  Spring产生动态Mapper对象的方式:

         1) DAO层实现类 继承SqlSessionDaoSupport类

              注意!:SqlSessionDaoSupport类提供了一个对象属性SqlSession;(super.getSqlSession)

         2) 将第一种方式的DAO层的实现类配置省略去掉(不是不需要写,是别人写过了,我们直接拿来使用)

              注意!:直接使用Mybatis提供的mapper实现类MapperFactoryBean,它有个mapperInterface(属性name值)接口;

                  缺点:每个mapper都需要配置一次;

         3)    优化第二种方式------->批量配置实现类

              1.先指定批量产生哪个包中的mapper对象

              2.MapperScannerConfigurer,它有个叫basePackage的set属性

              3.批量产生mapper在springIOC中的id值,默认就是首字母小写的接口名

              4.引入SqlSessionFactory的时候,name值变为sqlSessionFactoryBeanName,SqlSessionFactoryBeanName返回值是String类型,所以不使用ref,而是使用value去引入

    总结:1.不管哪种方式,都依赖SqlSessionFactory!要注意引入!!!

       2.一般对象类型引入用ref,其他用value(特殊情况除外!)

原文地址:https://www.cnblogs.com/yikuan-919/p/9716479.html