MyBatis与Spring整合
在实际开发中需要将mybaits与spring进行整合开发,让spring管理mybatis的SqlSessionFactory及dao(原始dao实现类及mapper接口代理对象)
1.搭建整合环境
导入jar包(mybaits-spring的整合包(由mybatis提供))
配置文件
2.原始dao开发
2.1.SqlMapConfig.xml
<?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>
<!-- 通过setting配置mybatis的运行参数
注意,设置运行参数会影响 mybatis的运行,一定要注意!
-->
<settings>
<!-- 延迟加载的总开关 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 设置为false实现按需求加载 -->
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 开启二级缓存 -->
<setting name="cacheEnabled" value="true"/>
</settings>
<!-- 定义别名 -->
<typeAliases>
<!-- 单个别名定义
type:类路径
alias:别名
-->
<!-- <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/> -->
<!-- 批量配置
指定pojo所在包路径,自动扫描包下的pojo定义别名,别名为类名(首字母小写或大写都可以)
-->
<package name="cn.itcast.mybatis.po"/>
<!-- 如果扫描多个包中的pojo,就写多个 package-->
<!-- <package name=""/> -->
</typeAliases>
<!-- 加载mapper.xml -->
<mappers>
<!-- 指定classpath下的映射文件 -->
<mapper resource="sqlmap/User.xml" />
<!-- <mapper resource="mapper/UserMapper.xml" /> -->
<!-- 通过mapper.java进行加载映射
class指定mapper接口 的路径
要求:mapper.java文件和mapper.xml同名且在同一个目录
-->
<!-- <mapper class="cn.itcast.mybatis.mapper.UserMapper"/> -->
<!-- 包扫描方式
指定mapper接口所在包,自动扫描mapper接口进行加载
要求:mapper.java文件和mapper.xml同名且在同一个目录
-->
<package name="cn.itcast.mybatis.mapper"/>
</mappers>
</configuration>
2.2.在spring容器中配置sqlSessionFactory
使用mybatis与spring整合包中的类创建sqlSesionFactory
2.3.Dao接口实现类继承SqlSessionDaoSupport
2.4.在spring容器中配置dao
2.5.从spring容器取出dao实例进行测试
3.mapper代理开发
3.1.SqlMapConfig.xml
<?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>
<!-- 通过setting配置mybatis的运行参数
注意,设置运行参数会影响 mybatis的运行,一定要注意!
-->
<settings>
<!-- 延迟加载的总开关 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 设置为false实现按需求加载 -->
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 开启二级缓存 -->
<setting name="cacheEnabled" value="true"/>
</settings>
<!-- 定义别名 -->
<typeAliases>
<package name="cn.itcast.mybatis.po"/>
</typeAliases>
<!-- 加载mapper.xml -->
<mappers>
<!-- 指定classpath下的映射文件 -->
<mapper resource="sqlmap/User.xml" />
<package name="cn.itcast.mybatis.mapper"/>
</mappers>
</configuration>
3.2.在spring容器中配置sqlSessionFactory
3.3.mapper.xml
3.4.mapper.java
3.5.spring与mybatis整合生成代理对象方法1 (MapperFactoryBean)
使用org.mybatis.spring.mapper.MapperFactoryBean
使用此方法需要在spring容器中配置很多的mapper的bean,比较麻烦,不推荐使用。
3.6.spring与mybatis整合生成代理对象方法2 (扫描器)
推荐使用mapper扫描器!