实例详解MyBatis-plus自动填充功能
作者:程序员hg 时间:2023-06-17 14:14:36
什么是自动填充
有些表中会有更新时间、创建时间、更新人或者创建人这些字段。
每次对数据进行新增、删除、修改时都需要对这些字段进行设置。传统的做法是在进行这些操作前,对Entity的字段进行set设置,然后再进行操作。这种做法不仅容易忘记导致出错、而且代码会显得特别冗余。
虽然新增时间和修改时间可以使用数据库的时间,但是新增人和修改人就不能使用这样的功能。
所以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 {
//插入填充
@Override
public void insertFill(MetaObject metaObject) {
Object password = getFieldValByName("password", metaObject);
if (ObjectUtils.isNull(password)) {
setFieldValByName("password", "88888888", metaObject);
}
}
//更新填充
@Override
public void updateFill(MetaObject metaObject) {
}
}
2.3将自定义的MyObjectHandler进行bean注入MybatisPlusConfig中
@Configuration
public class MybatisPlusConfig {
@Bean //插入填充
public MyMetaObjectHandler myMetaObjectHandler(){
return new MyMetaObjectHandler();
}
}
3.测试
@Test
public 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.结果
综上所示,自动填充成功。
来源:https://www.cnblogs.com/hg-blogs/p/15838389.html
标签:MyBatis-plus,自动填充
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
C#实现在前端网页弹出警告对话框(alert)的方法
2022-02-17 11:05:12
Android高级动画篇之SVG矢量动画范例
2022-09-28 11:01:00
![](https://img.aspxhome.com/file/2023/0/139010_0s.gif)
Android常用的AlertDialog对话框及自定义对话框
2021-05-31 05:09:51
![](https://img.aspxhome.com/file/2023/9/93319_0s.gif)
Unity之绕轴进行旋转的操作
2021-11-14 17:53:10
![](https://img.aspxhome.com/file/2023/9/104329_0s.jpg)
Android 通过TCP协议上传指定目录文件的方法
2023-11-07 23:34:11
![](https://img.aspxhome.com/file/2023/3/91043_0s.png)
C# 分支与循环介绍
2022-10-26 13:50:02
JAVA得到数组中最大值和最小值的简单实例
2023-03-18 01:19:39
Android仿知乎悬浮功能按钮FloatingActionButton效果
2021-08-04 16:33:47
![](https://img.aspxhome.com/file/2023/5/137995_0s.gif)
Android开发中MJRefresh自定义刷新动画效果
2023-11-27 06:04:20
![](https://img.aspxhome.com/file/2023/0/117120_0s.png)
Mybatis使用大于等于或小于等于进行比较
2021-12-25 10:21:44
![](https://img.aspxhome.com/file/2023/6/129216_0s.jpg)
详解升级Android Studio3.0时遇到的几个问题
2021-11-19 08:13:52
android编程实现sd卡读取数据库的方法
2021-10-03 12:26:31
Android11及以上文件读写权限申请详细介绍
2022-04-14 01:02:42
![](https://img.aspxhome.com/file/2023/9/104689_0s.jpg)
Spring框架中一个有用的小组件之Spring Retry组件详解
2021-05-27 10:07:40
在Spring使用iBatis及配置讲解
2021-07-06 20:07:39
Mybatis环境搭建及文件配置过程解析
2021-07-04 22:37:03
![](https://img.aspxhome.com/file/2023/4/75504_0s.png)
一文详解Java中的Stream的汇总和分组操作
2021-12-24 17:32:54
![](https://img.aspxhome.com/file/2023/3/61313_0s.png)
android利用ContentResolver访问者获取手机短信信息
2022-02-02 15:02:37
![](https://img.aspxhome.com/file/2023/1/116051_0s.jpg)
Hadoop组件简介
2023-08-20 14:07:00
![](https://img.aspxhome.com/file/2023/5/57725_0s.png)
Mybatis的介绍、基本使用、高级使用
2023-03-26 02:47:18
![](https://img.aspxhome.com/file/2023/8/91478_0s.jpg)