在上一篇中,我们介绍了Mybatis
这款优秀的框架,顺便提及了民间大神开发的两款插件(通用Mapper、PageHelper),从此告别简单CURD代码的编写….
[TOC]
插件介绍
分页插件
- GitHub地址: https://github.com/pagehelper/Mybatis-PageHelper
- 文档地址:https://gitee.com/free/Mapper/wikis/Home
在没有分页插件之前,写一个分页需要两条SQL语句,一条查询一条统计,然后才能计算出页码,这样的代码冗余而又枯燥,更重要的一点是数据库迁移,众所周知不同的数据库分页写法是不同的,而Mybatis
不同于Hibernate
的是它只提供动态SQL和结果集映射。值得庆幸的是,它虽然没有为分页提供良好的解决方案,但却提供了Interceptor
以供开发者自己扩展,这也是这款分页插件的由来….
通用Mapper
- Gitee地址: https://gitee.com/free/Mapper
- 文档地址:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 Example
相关的单表操作。通用 Mapper 是为了解决 MyBatis 使用中 90% 的基本操作,使用它可以很方便的进行开发,可以节省开发人员大量的时间,ssm项目一般都会使用它。
mapper-spring-boot-starter
在 starter 的逻辑中,如果你没有使用 @MapperScan 注解,你就需要在你的接口上增加 @Mapper注解,否则 MyBatis 无法判断扫描哪些接口。
这里的第一种用法没有用 @MapperScan
注解,所以你需要在所有接口上增加 @Mapper
注解。
注意:整合通用Mapper
的包必须引对。tk.mybatis.spring.annotation.MapperScan
环境/版本一览:
- 开发工具:Intellij IDEA 2018.2.2
- springboot: 2.0.5.RELEASE
- jdk:1.8.0_171
- maven:3.3.9
- pagehelper:1.2.5
- tk.mybatis:2.0.2
1、搭建
2、pom.xml
1 | <dependencies> |
3、application.yml
在
application.yml
文件中分别添加上数据库、Mybatis、通用Mapper、PageHelper的属性配置,这里只提供了常见场景的配置,更全的配置可以参考上文所述的文档
1 | server: |
通用Mapper
- mapper.enum-as-simple-type: 枚举按简单类型处理,如果有枚举字段则需要加上该配置才会做映射
- mapper.not-empty: 设置以后,会去判断 insert 和 update 中字符串类型
!=''
分页插件
- pagehelper.reasonable: 分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。
- support-methods-arguments: 支持通过 Mapper 接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。
4、sql
1 | DROP TABLE IF EXISTS `user`; |
5、resources
在 resources 下新建mapper 文件夹,在 mapper 下新建UserMapper.xml
1 |
|
6、entity
1 | package com.fatal.entity; |
7、mapper
1 | package com.fatal.mapper; |
8、service
IUserService.java
1 | package com.fatal.service; |
UserServiceImpl.java
1 | package com.fatal.service.impl; |
9、controller
1 | package com.fatal.controller; |
10、Application
1 | package com.fatal; |
启动后访问即可
GET:http://localhost:8080/user/
查询成功
POST:http://localhost:8080/user/
添加成功
11、Tests
1 | package com.fatal; |
可以测试一下通用Mapper的方法是否好用
注意
- MapperScan的包必须使用 tk.mybatis.spring.annotation 下的
- 实体类的主键字段必须加上注解 @Id
参考文档
总结
SpringBoot
的知识已经有前辈在我们之前探索了。比较喜欢的博主有:唐亚峰 | Battcn、方志朋的专栏、程序猿DD、纯洁的微笑。对这门技术感兴趣的可以去他们的博客逛逛。谢谢他们的分享~~
以上文章是我用来学习的Demo
,都是基于 SpringBoot2.x
版本。
源码地址: https://github.com/ynfatal/springboot2-learning/tree/master/chapter9