参考
- 官方mybatis-spring
参考文档 http://www.mybatis.org/spring/zh/getting-started.html
1. MyBatis-Spring简介
1.1. 什么是 MyBatis-Spring
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring。
1.2. MyBatis-Spring版本
注意MyBatis-Spring和Spring之间版本的对应关系
| MyBatis-Spring | MyBatis | Spring 框架 | Spring Batch | Java |
|---|---|---|---|---|
| 2.0 | 3.5+ | 5.0+ | 4.0+ | Java 8+ |
| 1.3 | 3.4+ | 3.2.2+ | 2.1+ | Java 6+ |
2. 基本环境搭建
2.1. 依赖
1 | <!-- Spring --> |
2.2. jdbc.properties
1 | jdbc.driver=com.mysql.jdbc.Driver |
2.3. applicationContext.xml
以下配置是必须的
- 配置数据源
- 配置SqlSessionFactoryBean,并引用数据源
1 | <context:property-placeholder location="classpath:jdbc.properties"/> |
2.4. Bean/Mapper接口/映射文件
这里就简单列出listBrands的配置1
2
3
4<!-- List<Brand> listBrands() -->
<select id="listBrands" resultType="demo.mybatis.entity.Brand">
SELECT * FROM brand
</select>
3. 整合方式一:使用SqlSessionTemplate
3.1. 编辑Bean配置文件
- sqlSessionFactory要指定Mapper映射文件的路径
- 配置SqlSessionTemplate,引用sqlSessionFactory
1 | <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> |
3.2. 测试
1 | ("classpath:applicationContext.xml") |
4. 整合方式二:SqlSessionDaoSupport
TODO
5. 整合方式三:MapperFactoryBean
TODO
6. 整合方式四:扫描Mapper
6.1. 配置MapperScannerConfigurer
配置MapperScannerConfigurer,指定扫描指定包下所有的Mapper接口,自动创建代理并且在Spring容器中注册,遵循以下规范
- Mapper接口与映射文件在同一级目录
- 注册的Mapper,其id是Mapper接口类名首字母小写
1 | <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> |
6.2. 测试
1 |
|
7. 几种方式的对比
显然扫描Mapper最方便啊,配置少,还是批量自动注册的