2019-03-11
Mybatis 通用 Mapper 和 Spring 集成
1.什么是MyBatis
MyBatis是一个Java持久化框架,它通过XML描述符或注解把对象对象 与存储过程"存储过程"或SQL语句关联起来。
与其他的对象关系映射框架不同,MyBatis并没有将Java对象 与数据库表关联起来,而是将Java方法与SQL语句关联。MyBatis允许用户充分利用数据库的各种功能,例如存储过程、视图、各种复杂的查询以及某数据库的专有特性。如果要对遗留数据库、不规范的数据库进行操作,或者要完全控制SQL的执行,MyBatis是一个不错的选择。
与JDBC相比,MyBatis简化了相关代码:SQL语句在一行代码中就能执行。MyBatis提供了一个映射引擎,声明式的把SQL语句执行结果与对象树映射起来。通过使用一种内建的类XML表达式语言,或者使用Apache Velocity集成的插件,SQL语句可以被动态的生成。
MyBatis与Spring Framework集成,这使开发者免于依赖性问题。
MyBatis支持声明式数据缓存(declarative data caching)。当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库获取的所有数据会被存储在一段高速缓存中,今后执行这条语句时就会从高速缓存中读取结果,而不是再次命中数据库。MyBatis提供了基于 Java HashMap 的默认缓存实现,以及用于与OSCache和Memcached连接的默认连接器。MyBatis还提供API供其他缓存实现使用。
2.实例
1.新建一个MySql数据库的表
![](https://img.haomeiwen.com/i16516148/a4ebe1089d365568.png)
2.建立orm模块结构
![](https://img.haomeiwen.com/i16516148/d6d389cb969f1658.png)
3.pom.xml依赖添加
![](https://img.haomeiwen.com/i16516148/4ea24ba86eca42be.png)
![](https://img.haomeiwen.com/i16516148/cf28384ad350fbf8.png)
![](https://img.haomeiwen.com/i16516148/c0d7f0c1df44fe0e.png)
![](https://img.haomeiwen.com/i16516148/0068ba3814bf7074.png)
![](https://img.haomeiwen.com/i16516148/28e697343a2e4a86.png)
![](https://img.haomeiwen.com/i16516148/82e774387923a0af.png)
4.jdbc.properties数据库连接配置
![](https://img.haomeiwen.com/i16516148/c187abeaee3823c2.png)
5.spring_mybatis.xml配置文件
![](https://img.haomeiwen.com/i16516148/89d110824e820695.png)
![](https://img.haomeiwen.com/i16516148/ffab500167cde761.png)
![](https://img.haomeiwen.com/i16516148/2223214232698abf.png)
6.User类
![](https://img.haomeiwen.com/i16516148/b045cab06857e3fb.png)
7.BaseDAO接口
![](https://img.haomeiwen.com/i16516148/13de88d8dfef6d8b.png)
8.UserDAO接口
![](https://img.haomeiwen.com/i16516148/70aaa40ad7734004.png)
9.UserService接口
![](https://img.haomeiwen.com/i16516148/f79637cb850202e9.png)
![](https://img.haomeiwen.com/i16516148/5fb12cf5853df13d.png)
10.UserServiceImpl实现类
![](https://img.haomeiwen.com/i16516148/3125ab4c4d233dda.png)
11.对UserServiceImpl进行junit单元测试
![](https://img.haomeiwen.com/i16516148/d99d0eb97954ec07.png)
![](https://img.haomeiwen.com/i16516148/0e15ba50dd3b52b0.png)