MybatisPlus 自动填充的实现
一、设置填充时机
使用下面的注解设置填充的时机,例如insert、update语句
@TableField(fill=FieldFill.INSERT)
有下面4种规则
源码
/** *字段填充策略枚举类 * **判断注入的insert和update的sql脚本是否在对应情况下忽略掉字段的if标签生成 *
* *@authorhubin *@since2017-06-27 */ publicenumFieldFill{ /** *默认不处理 */ DEFAULT, /** *插入时填充字段 */ INSERT, /** *更新时填充字段 */ UPDATE, /** *插入和更新时填充字段 */ INSERT_UPDATE }...... *判断优先级比{@linkFieldStrategy}高 *
二、设置填充的值
创建一个类实现mp提供的MetaObjectHandler接口
importcom.baomidou.mybatisplus.core.handlers.MetaObjectHandler; importorg.apache.ibatis.reflection.MetaObject; importorg.springframework.stereotype.Component; importjava.time.LocalDateTime; @Component publicclassMyMetaObjectHandlerimplementsMetaObjectHandler{ @Override publicvoidinsertFill(MetaObjectmetaObject){ setFieldValByName("字段名,例如User的createTime",LocalDateTime.now(),metaObject); } @Override publicvoidupdateFill(MetaObjectmetaObject){ setFieldValByName("字段名,例如User的updateTime",LocalDateTime.now(),metaObject); } }
注意请将中文去掉换成自己实体对象的字段名
测试代码:
Useruser=newUser(); user.setName("张三"); user.setAge(12); user.setAge(12); user.setId(11111111111L); user.setEmail("someone@qq.com"); user.setManagerId(1087982257332887553L); intinsert=userMapper.insert(user); System.out.println("插入"+insert);
检测表中数据:
说明成功
优化填充规则
案例代码:
importcom.baomidou.mybatisplus.core.handlers.MetaObjectHandler; importorg.apache.ibatis.reflection.MetaObject; importorg.springframework.stereotype.Component; importjava.time.LocalDateTime; @Component publicclassMyMetaObjectHandlerimplementsMetaObjectHandler{ @Override publicvoidinsertFill(MetaObjectmetaObject){ booleancreateTime=metaObject.hasSetter("createTime");//如果有这个字段返回true if(createTime){//如果字段不存在则不进行下面的填充 setFieldValByName("createTime",LocalDateTime.now(),metaObject); } } @Override publicvoidupdateFill(MetaObjectmetaObject){ ObjectupdateTime=getFieldValByName("updateTime",metaObject); if(null==updateTime){//没有设置updateTime值则进行填充如果有设置值则不进行填充 setFieldValByName("updateTime",LocalDateTime.now(),metaObject); } } }
到此这篇关于MybatisPlus自动填充的实现的文章就介绍到这了,更多相关MybatisPlus自动填充内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。