mybatis-plus自动填充

前言

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

mybatis-plus自动填充

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

  1. sql可以自定义默认值,也就是在建表的时候给字段设定默认值就可以了,下面以pgsql为例
  1. 在代码里面写一个自动填充的功能,相当于是写一个公共方法,下面参考mybatis-plus

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

mybatis-plush官网

自定义 MyMetaObjectHandler

java 复制代码
@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);
		}
	}



}

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

java 复制代码
@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();
	}



}

然后再注解填充字段

作者:神的孩子都在歌唱

本人博客:https://blog.csdn.net/weixin_46654114

转载说明:务必注明来源,附带本人博客连接。

相关推荐
云絮.1 天前
mybatis(二)
java·数据库·mybatis
夕除2 天前
redis--主从还是集群,内存
java·spring·mybatis
驭渊的小故事2 天前
MyBatis-Plus 实战指南:从基础 CRUD 到条件构造器与自定义 SQL(二)
数据库·sql·mybatis
毕业设计7033 天前
(免费领源码)基于node的学生公寓管理系统06412- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·mysql·node.js·maven·mybatis·express·b/s
驭渊的小故事4 天前
MyBatis XML 开发实战:从配置到 CRUD 全解析
xml·java·mybatis
云絮.4 天前
Mybatis(一)
java·数据库·mybatis
她的男孩6 天前
权限通了、列表有数,一点分页就炸Forge Admin 用 COUNT(1) 扛住复杂待办
java·spring boot·mybatis
paopaokaka_luck7 天前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
大牧师7 天前
Mybatis 框架教程
java·数据库·mybatis·数据持久化·orm
代码什么用7 天前
MyBatis使用PageHelper && MyBatis的注解式开发
mybatis