• mybatis与spring整合


    因spring3发布时mybatis还没有出正式版本,所以spring没有整合最新的mybatis.不过社区倒是开发了一个中间件。

    需要的jar包

    mybatis-3.0.6.jar

    mybatis-spring-1.0.2.jar

    要点:

    1.在spring中配置mybatis工厂类

    2.在dao层使用spring注入的的工具bean对数据进行操作

    整合时,可以有四种方式来使用mybatis进行数据处理。

    spring 中必须的配置。

    spring的配置文件中加入以下内容

    Xml代码 
    1     <!-- MyBatis配置 -->  
    2         <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
    3             <property name="dataSource" ref="c3p0DataSource" />  
    4             <property name="configLocation" value="/WEB-INF/config/db/MyBatisConfiguration.xml" />  
    5             <property name="mapperLocations" value="/WEB-INF/config/db/*Mapper.xml" />  
    6             <property name="typeAliasesPackage" value="${mybatis.alias.basepackage}" />  
    7         </bean>   

    1.SqlSessionFactoryBean (必需)

       就是中间件所需的处理类

    2.dataSource  (必需)

       spring中数据源引用

    3.configLocation  (可选)

       Mybatis自身的配置文件,一般用来声明别名

    4.mapperLocation  (可选)

       mybatis的映射文件

    5.typeAliasesPackage (可选)

       要映射类的包路径,如果使用了这种方式,则configLocation中不必再进行声明

    使用mybatis进行数据处理的四种方式(SqlSessionTemplate/SqlSessionDaoSupport/MapperFactoryBean/MapperScannerConfigurer)

    不同方式的特点

    1. SqlSessionTemplate  这个需要写配置文件,在实现类中注入sqlsession,再使用sqlsession,是细颗粒控制
    2. SqlSessionDaoSupport   这个只需要在实现类中继承特殊类就可以使用sqlsession
    3. MapperFactoryBean  这个要写配置文件,把对应的所有接口在配置文件中引用即可,无需写实现类
    4. MapperScannerConfigurer  这个要写配置文件,只要给出接口所在的包即可,会自动把包中的接口引入,无需写实现类
    • SqlSessionTemplate
    1. 配置文件加入新配
      Java代码 
      1     <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">  
      2       <constructor-arg index="0" ref="sqlSessionFactory" />  
      3       <constructor-arg index="1" value="BATCH" /><!--- 如果想要进行批量操作可加入这个属性 ->  
      4     </bean>  
      
    2. 注入sqlsession()
      Java代码
      1     @Reasource //使用spring3的注解注入  
      2     private SqlSession sqlSession; 
    3. 使用sqlsession来进行操作
      Java代码 
      1     public User getUser(String userId) {  
      2         return (User) sqlSession.selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);  
      3       }  
    • SqlSessionDaoSupport(sqlSessionFactory会被spring自动装配,不需要手动注入)
    1. 继承SqlSessionDaoSupport类
      Java代码
      1     public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {  
      2       
      3     }  
    2. 使用getSqlSession()方法取sqlSession来进行数据处理
      Java代码 
      1     public User getUser(String userId) {  
      2         return (User) getSqlSession().selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);  
      3       }   
    • MapperFactoryBean
    1. 写配置文件,引入每个DAO接口
      Xml代码 
      1     <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">  
      2       <property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" />  
      3       <property name="sqlSessionFactory" ref="sqlSessionFactory" />  
      4     </bean>   
    2. 在业务层可直接注入dao的接口进行操作
    • MapperScannerConfigurer
    1. 写配置文件,配置包名将自动引入包中的所有接口
      Xml代码 
      1     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
      2       <property name="basePackage" value="org.mybatis.spring.sample.mapper" />  
      3     </bean>   
    2. 在业务层可直接注入DAO接口操作,注入时使用的是接口名,其首字母小写
    3. 注意:如果有别的实现类,其提供的名称如果是接口名,且首字母小写,则会在启动时出现冲突错误
  • 相关阅读:
    编译安装LEMP
    eAccelerator配置和使用指南
    /dev/null的用途
    分库分表
    JVM
    SOFA 数据透析
    HTTPS
    SOFA 通信
    分布式锁
    mysql 锁
  • 原文地址:https://www.cnblogs.com/sky-of-chuanqingchen/p/4611215.html
Copyright © 2020-2023  润新知