• mybatis-plus自动填充


    前言

    这是我在这个网站整理的笔记,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱

    mybatis-plus自动填充

    大家做设计数据表的时候,基本上都会有del_flag,create_time, update_time,这三个字段,这也是表必备的三字段,可是有一个问题,我们每次做增改的时候都要写代码去定义一下这些字段的值,这样会很麻烦,目前有两种方法解决

    1. sql可以自定义默认值,也就是在建表的时候给字段设定默认值就可以了,下面以pgsql为例

    image-20231017175944666

    1. 在代码里面写一个自动填充的功能,相当于是写一个公共方法,下面参考mybatis-plus

    mybati-plus帮我们实现了底层逻辑,我们只需要自定义实现类MyMetaObjectHandler就可以了

    mybatis-plush官网

    自定义 MyMetaObjectHandler

    @Slf4j
    public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
    
    	@Override
    	public void insertFill(MetaObject metaObject) {
    		try {
    			//根据属性名字设置要填充的值
    			if (metaObject.hasGetter("createTime")) {
                    this.setFieldValByName("createTime", new Date(), metaObject);
    			}
    
                //根据属性名字设置要填充的值
                if (metaObject.hasGetter("delFlag")) {
                    this.strictInsertFill(metaObject,"delFlag", String.class, "0");
                }
    
    		} catch (Exception e) {
    			throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
    		}
    	}
    
    	@Override
    	public void updateFill(MetaObject metaObject) {
    		try {
    			if (metaObject.hasGetter("updateTime")) {
    				this.setFieldValByName("updateTime", new Date(), metaObject);
    			}
    		} catch (Exception e) {
    			throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
    		}
    	}
    
    
    
    }
    
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    然后需要创建一个mybatis-plus配置类

    @EnableTransactionManagement(proxyTargetClass = true)
    @Configuration
    // 指定要扫描的Mapper类的包的路径
    @MapperScan("${mybatis-plus.mapperPackage}")
    public class MybatisPlusConfig {
    
    
    	/**
    	 * 元对象字段填充控制器
    	 * https://baomidou.com/guide/auto-fill-metainfo.html
    	 */
    	@Bean
    	public MetaObjectHandler metaObjectHandler() {
    		return new CreateAndUpdateMetaObjectHandler();
    	}
    
    
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    然后再注解填充字段

    image-20231017180308264

    作者:神的孩子都在歌唱
    本人博客:https://blog.csdn.net/weixin_46654114
    转载说明:务必注明来源,附带本人博客连接。

  • 相关阅读:
    Biotin-Cy2 Conjugate,生物素-Cy2 偶联物_Cy2 生物素偶联物
    Design A Dropbox
    Leetcode hot 100之回溯O(N!):选择/DFS
    YOLOv7独家改进:Multi-Dconv Head Transposed Attention注意力,效果优于MHSA| CVPR2022
    windows 的一些常见命令
    tomcat启动配置java_home,启动网址等,点击startup.bat直接启动
    【元宇宙欧米说】MetaArks:打造社交+游戏的商业发展模式
    广播实现强制下线功能
    如何说服技术老大用 Redis ?
    ISP和IAP介绍
  • 原文地址:https://blog.csdn.net/weixin_46654114/article/details/133895809