gpt4 book ai didi

MybatisPlus 自动填充的实现

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章MybatisPlus 自动填充的实现由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1、设置填充时机 。

使用下面的注解设置填充的时机,例如insert 、update语句 。

?
1
@TableField (fill = FieldFill.INSERT)

有下面4种规则 。

MybatisPlus 自动填充的实现

源码 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
  * 字段填充策略枚举类
  *
  * <p>
  * 判断注入的 insert 和 update 的 sql 脚本是否在对应情况下忽略掉字段的 if 标签生成
  * <if test="...">......</if>
  * 判断优先级比 {@link FieldStrategy} 高
  * </p>
  *
  * @author hubin
  * @since 2017-06-27
  */
public enum FieldFill {
   /**
    * 默认不处理
    */
   DEFAULT,
   /**
    * 插入时填充字段
    */
   INSERT,
   /**
    * 更新时填充字段
    */
   UPDATE,
   /**
    * 插入和更新时填充字段
    */
   INSERT_UPDATE
}

2、设置填充的值 。

创建一个类实现mp提供的MetaObjectHandler接口 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
 
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
   @Override
   public void insertFill(MetaObject metaObject) {
     setFieldValByName( "字段名,例如User的createTime" , LocalDateTime.now(),metaObject);
   }
 
   @Override
   public void updateFill(MetaObject metaObject) {
     setFieldValByName( "字段名,例如User的updateTime" ,LocalDateTime.now(),metaObject);
   }
}

注意请将中文去掉换成自己实体对象的字段名 。

测试代码:

?
1
2
3
4
5
6
7
8
9
User user = new User();
user.setName( "张三" );
user.setAge( 12 );
user.setAge( 12 );
user.setId(11111111111L);
user.setEmail( "someone@qq.com" );
user.setManagerId(1087982257332887553L);
int insert = userMapper.insert(user);
System.out.println( "插入" +insert);

检测表中数据:

MybatisPlus 自动填充的实现

说明成功 。

优化填充规则 。

案例代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
 
import java.time.LocalDateTime;
 
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
   @Override
   public void insertFill(MetaObject metaObject) {
     boolean createTime = metaObject.hasSetter( "createTime" ); //如果有这个字段返回true
     if (createTime) { //如果字段不存在则不进行下面的填充
       setFieldValByName( "createTime" , LocalDateTime.now(), metaObject);
     }
   }
 
   @Override
   public void updateFill(MetaObject metaObject) {
     Object updateTime = getFieldValByName( "updateTime" , metaObject);
     if ( null == updateTime) { //没有设置updateTime值则进行填充如果有设置值则不进行填充
       setFieldValByName( "updateTime" , LocalDateTime.now(), metaObject);
     }
   }
}

到此这篇关于MybatisPlus 自动填充的实现的文章就介绍到这了,更多相关MybatisPlus 自动填充内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://blog.csdn.net/qq_41813208/article/details/108059691 。

最后此篇关于MybatisPlus 自动填充的实现的文章就讲到这里了,如果你想了解更多关于MybatisPlus 自动填充的实现的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com