記一次在MyBatis-Plus中 @TableField 自動填充中遇見的坑
阿新 • • 發佈:2020-08-28
先放一張表生成策略對應的結果
值 | 描述 |
---|---|
DEFAULT | 預設不處理 |
INSERT | 插入時填充欄位 |
UPDATE | 更新時填充欄位 |
INSERT_UPDATE | 插入和更新時填充欄位 |
此處需要注意一下,如果MyBatisPlus中有一些公共欄位例如修改時間,建立時間,樂觀鎖等等
建立是採用INSERT方案
修改時採用UPDATE
在修改時注意,使用MyBatis-Plus的update方法,傳入QueryWrapper或者直接傳null
用updateById會出現策略不生效的情況
貼上實現生成策略介面的程式碼
package com.mengxiangnongfu.project.configure.mybatisplus.tools;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.mengxiangnongfu.project.util.TimeHelper; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; /** * 自動填充處理類 * mybatis-plus 3.3版本以上 使用註解的方式 * https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89450006?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param * * @author Yang * @version 1.0 * @see **/ @Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) {
//version是欄位名 第二個引數是填充的資料this.setFieldValByName("version", new Long(0), metaObject); this.setFieldValByName("createTime", TimeHelper.getCurrentTime14(), metaObject); this.setFieldValByName("updateTime", TimeHelper.getCurrentTime14(), metaObject); } @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("updateTime", TimeHelper.getCurrentTime14(), metaObject); } }