前些日子在做微信点餐项目中学习使用了JPA,不用像Mybatis一样写一堆Mapper和XML,继承接口的方式确实很方便,但是遇上多表查询就很头疼了。
直到我发现了一位大牛写的Mybatis通用Mapper,通用Mapper可以简化对单表的CRUD操作,PageHelper分页插件可以自动拼接分页SQL,并且可以使用MyBatis Geneator来自动生成实体类,Mapper接口和Mapper xml代码。
最重要的是,MapperXML文件中一下子变得简洁多了,复杂的查询自己手动添加即可,非常的方便。
1.前言
插件地址及作者链接https://gitee.com/free
参考
github-pagehelper分页插件
github-通用Mapper
Oracle数据库-MyBatis通用Mapper和PageHelper
2.准备
环境
- 基础框架:Spring Boot
- Java版本: 1.8
- 数据库:MySQL5.6
POM文件
pom文件中引入:
|
|
数据库准备
|
|
3.配置
配置Mybatis
在Spring Boot配置文件application.yml中配置MyBatis:
|
|
配置通用Mapper
先自定义一个通用Mapper接口
注意!!该接口不能被扫描到,应该和其他Mapper分开。其他的Mapper都需要继承这个接口。
这里我放在了common.config包下。
|
|
将刚才的通用接口
在Spring Boot配置文件application.yml中配置通用Mapper:
|
|
配置Pagehelper
一般情况下,你不需要做任何配置。
如果需要配置,可以看官方文档
配置MBG的配置文件
在路径src/main/resources/config下新建mybatis-generator.xml:
|
|
配置包扫描
要让Spring Boot扫描到Mapper接口,需要在Spring Boot入口类中加入@MapperScan(“com.springboot.mapper”)注解。
|
|
配置数据库
在Spring Boot配置文件application.yml中配置数据库连接:
|
|
4.启动MBG自动生成
配置好上述文件后,在控制台运行命令mybatis-generator:generate,或者在IDEA插件中双击运行:
生成的实体类
|
|
生成的Mapper类
干净整洁,复杂业务可以自由扩展
|
|
生成的映射文件
干净整洁,复杂SQL可以自由扩展
|
|
5.通用Service
我们可以定义一个通用的Service,在其中定义一些通用的方法,便于其他Service继承实现:
通用Service接口
|
|
通用Service实现类
|
|
自定义CountryService继承通用Service接口
|
|
CountryService的实现类
|
|
这样即可在UserService中使用BaseService中的通用方法了。
6.测试
|
|