mybatis-plus自动填充
【摘要】 mybatis-plush官网前言这是我在这个网站整理的笔记,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 mybatis-plus自动填充大家做设计数据表的时候,基本上都会有del_flag,create_time, update_time,这三个字段,这也是表必备的三字段,可是有一个问题,我们每次做增改的时候都要写代码去定义一下这些字段的值,这样会很麻烦,目前有两种方法解决sql...
前言
这是我在这个网站整理的笔记,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱
mybatis-plus自动填充
大家做设计数据表的时候,基本上都会有del_flag,create_time, update_time,这三个字段,这也是表必备的三字段,可是有一个问题,我们每次做增改的时候都要写代码去定义一下这些字段的值,这样会很麻烦,目前有两种方法解决
sql可以自定义默认值,也就是在建表的时候给字段设定默认值就可以了,下面以pgsql为例
在代码里面写一个自动填充的功能,相当于是写一个公共方法,下面参考mybatis-plus
mybati-plus帮我们实现了底层逻辑,我们只需要自定义实现类MyMetaObjectHandler就可以了
自定义 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);
}
}
}
然后需要创建一个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();
}
}
然后再注解填充字段
作者:神的孩子都在歌唱
转载说明:务必注明来源,附带本人博客连接。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)