文章来源:https://mp.weixin.qq.com/s/YL0FDjn8BczNfIJJ9DgMRA
原文作者:forezp
来源平台:微信公众号

在上一篇文章讲述了如何使用Mybatis-plus自动生成代码,生成的代码具有单表操作数据库的能力,节约了开发时间。然后讲述了如何在Spring Boot中整合Mybatis-Plus。这篇文章讲述如何使用Mybatis-Plus的增强功能:自动填充功能和查询分页功能。

Mybatis-Plus自动填充功能

在Matrix-web项目中,数据库的所有表都有四个公共字段,即create_by、create_time、update_by、update_time ,即存储了表数据的创建人、创建时间、更新时间、更新人。在对表插入一条数据的时候,需要自动填充四个字段,对表数据更新操作,需要更新后2个字段。但是如果在每个插入和更新业务逻辑里面, 手动的填充这四个字段,增加了工作量。幸好mybatis-plus有一个自动更新的插件。

实现自动填充功能很简单,只需要实现MetaObjectHandler接口和实现填充逻辑,并把它注入到spring ioc容器中即可。其中下面的代码UserUtils.getCurrentUserWithDefault();即获取当前请求的用户,在权限那一篇文章有讲到过,在这里不再重复;然后加上注解@Component注入到Spring ioc容器里面去。

@Component

  • 字段必须声明TableField注解,属性fill选择对应策略,该申明告知 Mybatis-Plus 需要预留注入 SQL 字段
  • 填充处理器MyMetaObjectHandler 在 Spring Boot 中需要声明@Component 注入
  • 必须使用父类的setFieldValByName()或者setInsertFieldValByName/setUpdateFieldValByName方法,否则不会根据注解http://FieldFill.xxx来区分。
public 

然后再表中映射的实体类,加上该上面的相应的注解即可,比如在Matrix-Web中所有数据库映射的实体类都继承BaseEntity。

@Data

比如SysUser实体类继承上面的BaseEntity。

@Data

当调用SysUserMapper插入SysUser数据的时候,就会自动在数据库中插入create_by、create_time、update_by、update_time这四个数据。

分页插件

在Web开发中,经常用到分页插件。Mybatis-Plus提供了这样的能力。需要在spring ioc容器注入PaginationInterceptor,代码如下:

@Configuration

现在以一个具体的案例来讲述如何分页。比如查询SysUser的分页。在Controller层:

@GetMapping

在上面的代码中需要必传2个参数,page和pageSize,即页数和每页的数量。PageUtils.check(page, pageSize)是检查page和pageSize是否合理。RespDTO是返回给前端的DTO类。具体代码如下:

public 

PageResultsDTO是存放分页的数据和分页的元数据,代码如下:

public 

Sevice层代码,需要将sysUserMapper查询的数据包装到PageResultsDTO中代码如下:

public 

SysUserMapper的searchUsers方法会查询数据库,获取数据:

@Mapper

SysUserMapper的查询数据库的sql语句,需要自己写,在SysUserMapper.xml中,

<

这是完整的使用Mybatis-Plus插件分页的案例。前端代码就不在这里讲解了,在前端界面展示的分页效果如下:

总结

这篇文章讲述了如何使用Mybatis-Plus的增强功能,自动填充和分页。下篇文章将讲述如何使用Durid连接池和Sharding-JDBC实现数据库读写分离。

mybatis plus springboot test_跟我学Springboot开发后端管理系统3:Mybatis-Plus实战2相关推荐

  1. 跟我学Springboot开发后端管理系统3:Mybatis-Plus实战2

    在上一篇文章讲述了如何使用Mybatis-plus自动生成代码,生成的代码具有单表操作数据库的能力,节约了开发时间.然后讲述了如何在Spring Boot中整合Mybatis-Plus.这篇文章讲述如 ...

  2. 跟我学Springboot开发后端管理系统2:Mybatis-Plus实战

    在Matrix-Web项目中使用Mybatis-Plus作为操作数据库的ORM框架.在市面上常用的ORM框架有hibernetes.mybatis.JPA等,那么为什么选择Mybatis-Plus呢? ...

  3. 跟我学Springboot开发后端管理系统5:数据库读写分离

    在Matrix-web后台管理系统中,使用到了数据库的读写分离技术.采用的开源的Sharding-JDBC作为数据库读写分离的框架.Matrix-Web后台数据库这一块采用的技术栈如下: 使用Myba ...

  4. 跟我学Springboot开发后端管理系统9:AOP+logback+MDC日志输出

    MDC介绍 在比较复杂的应用中,一个请求需要走很多个方法的处理,怎么样才能快速查找一个请求的全部日志呢.在分布式系统中,我们可以用链路追踪,比如zipkin.skywalking去快速查找日志,从而定 ...

  5. 跟我学Springboot开发后端管理系统8:Matrxi-Web权限设计实现

    上篇文章讲述了Matrix-web整体实现的权限控制的思路.现在来回顾一下: 首先,用户需要登录,填用户名.密码,后端接收到登录请求,进行用户.密码的校验,校验成功后则根据用户名生成Token,并返回 ...

  6. 跟我学Springboot开发后端管理系统7:Matrxi-Web权限设计

    Matrxi-Web权限设计 对于一个后端系统来说,权限是基础设施,是安全保障.没有权限,系统可能随时面临各种风险,所以权限设计对后端系统来说至关重要.在Javaweb开发中,有很多权限开发的框架,比 ...

  7. 跟我学Springboot开发后端管理系统6:缓存框架Caffeine

    Caffeine是一个基于Java8的高性能缓存框架,号称趋于完美.Caffeine受启发于Guava Cache的API,使用API和Guava是一致的.它借鉴了Guava Cache和Concur ...

  8. 跟我学Springboot开发后端管理系统4:数据库连接池Druid和HikariCP

    上一篇文章主要讲解了如何再Matrix-Web中使用Mybatis-Plus,Mybatis-Plus作为Orm框架,连接数据库需要连接数据库的依赖.WEB 系统高并发环境下,频繁的进行数据库连接操作 ...

  9. java基于springboot+vue的驾校学车报名预约管理系统 nodejs+element

    驾校预约管理系统是基于java编程语言,springboot框架,mysql数据库开发,本系统分为用户,教练,管理员三个角色:用户注册登陆可以查看驾校公告信息,在线预约教练,取消预约等操作:教练可以查 ...

最新文章

  1. 你绝没用过的一款高级空间可视化工具
  2. python 继承和多态
  3. 基本运算符与if while详解:
  4. Marketing Cloud profile界面功能介绍
  5. 新唐M031学习笔记(一)定时器基础计数应用
  6. 线性表------栈
  7. 数值计算算法-多项式插值算法的实现与分析
  8. Django——序列化与反序列化
  9. 计算机视觉,不可能凉!
  10. KOFLive Beta Daily-Scrum 2
  11. 【Redis】Redis 替代方案
  12. ACM_栈的压入、弹出序列
  13. 一个CPU核可以设计为两个以上的线程
  14. HttpSession基础
  15. Oracle 发送QQ邮件监控定时任务
  16. android开发中常用的占位符
  17. 狂神说的全部笔记_聪明人的方格笔记术
  18. a标签去下划线 菜鸟教程_HTML下划线标签示例教程
  19. 新手小白大学生,在宿舍做短视频自媒体,两个星期收益1700多
  20. [论文写作笔记] C8 讨论用于增加论文厚度

热门文章

  1. 虚拟机centos7 git clone特别慢_从文件生命周期看GIT的提交流程
  2. mysql sql exists_数据库sql语句的exists总结
  3. debian 查看php版本,在debian 9中为php7.0-fpm启用状态查询
  4. toad for mysql调试存储过程_【oracle】oracle 调试 存储过程
  5. Windows核心编程——内存映射
  6. vector内存分配和回收机制
  7. 如何排查mysql数据乱码_如何解决MYSQL数据库中文乱码问题?
  8. git命令详解( 六 )
  9. jvm 虚拟机的组成部分
  10. 动态规划(树形DP):HDU 5886 Tower Defence