zoukankan      html  css  js  c++  java
  • 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(特殊情况除外!)

  • 相关阅读:
    Http方法:Get请求与Post请求的区别
    udev和rules使用规则
    c++中的动态内存分配
    c++中重载运算符
    c++中静态成员函数
    c++中值传递,址传递,引用传递
    c++中实现单例模式singleton class
    [Windows篇] 在windows 10上源码编译gtest 并编写CMakeLists.txt
    [Ubuntu篇] 在ubuntu上源码编译gtest,编写gtest-config.cmake并测试
    使用boost data_time模块来获取毫秒级时间并转换为string字符串
  • 原文地址:https://www.cnblogs.com/yikuan-919/p/9716479.html
Copyright © 2011-2022 走看看