Spring与Mybatis整合

1.加入spring,mybatis及整合的jar包文件
  注意:spring 4支持jdk1.6以上
     spring3支持jdk1.6及其以下
  整合的jar文件:mybatis-spring (下载地址)
  spring数据源支持:spring-jdbc-(版本).release.jar
  spring事务支持:spring-tx-(版本).release.jar
  其余必备spring如spring-bean。。。暂时省略
2.实体类,数据访问接口,以及配置sql映射文件忽略
    与只使用Mybatis时的配置相似
3.Mybatis配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!Doctype configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <typeAliases>
<!--此处仅仅设置类型别名,为了方便后续实体类的引用可直接写类名-->
<!--数据源配置和sql映射信息转移到Spring配置文件中-->
        <package name="pojo(装实体类的包名)"/>
    </typeAliases>
</configuration>

4.Spring配置文件
  (1)配置数据源

 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url">
            <value><![CDATA[jdbc:mysql://127.0.0.1:3306/x?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull]]></value>
        </property>
        <property name="username"><value>root</value></property>
        <property name="password"><value>root</value></property>
    </bean>

   (2)获取SqlSession实例的n种方法
    注:
      原来Mybatis获取时通过SqlSessionFactoryBuilder创建SqlSessionFactory,再进一步获取SqlSession实例
      <1>配置SqlSessionFactoryBean,使用SqlSessionTemplate实现数据库的操作
        注:
         SqlSessionFactoryBean封装了SqlSessionFactoryBuilder创建SqlSessionFactory的过程

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--引用数据源组件-->
        <property name="dataSource" ref="dataSource"/>
        <!--引用Mybatis组件-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
        <!--扫描基准包,自动匹配Mapper-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.x.dao"/>
</bean>

<!--将不断改动的地方-->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>
<bean id="userMapper" class="cn.smbms.dao.UserMapperImpl">
        <property name="sqlSession" ref="sqlSessionTemplate"></property>
    </bean>

 同时接口的实现类中需要定义sqlSessionTemplate实例sqlSession以及SETTER方法

      <2>采用SqlSessionDaoSupport简化SqlSessionTemplate
         接口的实现类直接extends SqlSessionDaoSupport
         无需定义sqlSessionTemplate实例sqlSession以及SETTER方法,
         也无需在spring中配置SqlSessionTemplate,并且将

<bean id="userMapper" class="cn.smbms.dao.UserMapperImpl">
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    </bean>

      <3>配置方式注入映射器
         --->1.MapperFactoryBean注入映射器

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
        不断配置mapper实例
        <property name="mapper1" value="cn.x.dao.mapper1"/> 
        <property name="mapper1" value="cn.x.dao.mapper1"/> 
        
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    </bean>

         --->2.MapperScannerConfigure注入映射器
         basePackage直接指定扫描的基准包,基准包及子包下所有接口将被递归扫描,如果存在接口在sql映射文件中定义过,将自动被注册为MapperFactoryBean

 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.x.dao"/>
    </bean>

         映射器被映射到spring的容器时,spring会根据其接口名称为其命名,默认规则是首字母小写的非完全限定类名,可以在配置文件中直接被引入,也可以使用@Autowired
或@Resource注解实现对业务的依赖注入。

posted @ 2018-04-19 15:26  pk-reset  阅读(129)  评论(0)    收藏  举报