实例详解MyBatis-plus自动填充功能
目录
- 什么是自动填充
- 1.这个功能是做什么的呢?
- 2.下面用一个例子来学习这个功能
- 3.测试
- 4.结果
什么是自动填充 有些表中会有更新时间、创建时间、更新人或者创建人这些字段。
每次对数据进行新增、删除、修改时都需要对这些字段进行设置。传统的做法是在进行这些操作前,对Entity的字段进行set设置,然后再进行操作。这种做法不仅容易忘记导致出错、而且代码会显得特别冗余。
虽然新增时间和修改时间可以使用数据库的时间,但是新增人和修改人就不能使用这样的功能。
【实例详解MyBatis-plus自动填充功能】所以MP就提供自动填充的功能,帮助自定设置这些字段的值,提升开发效率,代码也会显得特别优雅。
1.这个功能是做什么的呢? 有的时候,我们可能有这样子的需求,在插入(insert)或者更新数据(update)的时候可以自动填充数据,比如密码,version等。在mp中为我们提供了这种功能,非常的方便!
2.下面用一个例子来学习这个功能 2.1添加注解@TableField(),这个注解里面的fill提供了填充的功能
@TableField(fill = FieldFill.INSERT) //插入时进行填充private String password;
FirledFill提供了以下几种模式,根据情况可以自己进行选择
public enum FieldFill {DEFAULT,//默认不进行处理INSERT,//插入的时候填充字段UPDATE,//更新的时候填充字段INSERT_UPDATE; //插入和更新的时候填充字段private FieldFill() {//构造方法}}
2.2编写MyMetaObjectorHandler,实现源对象字段填充控制器抽象类,根据需求实不同的方法,这里是实现一个插入填充的方法
public class MyMetaObjectHandler implements MetaObjectHandler {//插入填充@Overridepublic void insertFill(MetaObject metaObject) {Object password = getFieldValByName("password", metaObject); if (ObjectUtils.isNull(password)) {setFieldValByName("password", "88888888", metaObject); }}//更新填充@Overridepublic void updateFill(MetaObject metaObject) {}}
2.3将自定义的MyObjectHandler进行bean注入MybatisPlusConfig中
@Configurationpublic class MybatisPlusConfig {@Bean//插入填充public MyMetaObjectHandler myMetaObjectHandler(){return new MyMetaObjectHandler(); }}
3.测试
@Testpublic void test() {User user = new User(); user.setAge(29); user.setEmail("test@163.com"); user.setUserName("guanyu"); user.setName("关羽"); user.setAddress("上海"); // user.setPassword("123456"); //将密码进行注释,如果插入填充生效的话,数据库默认就填充了上面的88888888为password的值int result = userMapper.insert(user); System.out.println("result=" + result); System.out.println(user.getId()); }
4.结果
文章图片
文章图片
综上所示,自动填充成功。
到此这篇关于MyBatis-plus自动填充功能的文章就介绍到这了,更多相关MyBatis-plus自动填充内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 一文详解Java拦截器与过滤器的使用
- Node.js实现登录注册功能
- 国产GPU的发展历程及芯片性能详解
- 设计模式详解之结构型设计模式——适配器、装饰器
- R语言马尔可夫MCMC中的Metropolis Hastings,MH算法抽样(采样)法可视化实例
- 新萝卜家园笔记本专用的系统安装详解
- 利用vue3+threejs仿iView官网大波浪特效实例
- 大数据|MapReduce计算流程详解
- SpringBoot实现WEB的常用功能案例详解
- Java静态嵌套类