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注解实现对业务的依赖注入。

浙公网安备 33010602011771号