Mybatis-Plus自動填充的實現(xiàn)示例
在常用業(yè)務中有些屬性需要配置一些默認值,MyBatis-Plus提供了實現(xiàn)此功能的插件。在這里修改user表添加 create_time 字段和 update_time 字段,在User類中添加對應屬性。
1、為需要自動填充的屬性添加注解 @TableField
提供了4種自動填充策略:DEFAULT,默認不處理。INSERT,插入填充字段。UPDATE,更新填充字段。INSERT_UPDATE,插入和更新填充字段。
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
2、實現(xiàn)字段填充控制器,編寫自定義填充規(guī)則
實現(xiàn) MetaObjectHandler 接口,實現(xiàn) insertFill 和 updateFill 方法,此處的 create_time 和update_time字段需要插入時填充值, 只有 update_time 字段在修改時需要填充,所以策略如下。
//需要將自定義填充控制器注冊為組件
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
private static final Logger LOGGER= LoggerFactory.getLogger(MyMetaObjectHandler.class);
//insert操作時要填充的字段
@Override
public void insertFill(MetaObject metaObject) {
LOGGER.info("start insert fill ...");
//根據(jù)屬性名字設置要填充的值
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
//update操作時要填充的字段
@Override
public void updateFill(MetaObject metaObject) {
LOGGER.info("start insert fill ...");
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
3、插入數(shù)據(jù)測試
@RunWith(SpringRunner.class)
@SpringBootTest
public class CRUDTest {
@Autowired
private UserMapper userMapper;
@Test
public void testInsert(){
User user = new User();
user.setName("jack11");
user.setAge(20);
user.setEmail("4849111@qq.com");
int result= userMapper.insert(user);
System.out.println(result);
System.out.println(user);
}
}
4、修改數(shù)據(jù)測試
@Test
public void testUpdate(){
User user = new User();
user.setId(2L);
user.setName("Jackie");
int result = userMapper.updateById(user);
System.out.println(result);
}
一次插入數(shù)據(jù)后,create_time和update_time都被填充了設置的時間,做update操作后只有update_time的進行了填充修改。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Dwr3.0純注解(純Java Code配置)配置與應用淺析二之前端調(diào)用后端
我們講到了后端純Java Code的Dwr3配置,完全去掉了dwr.xml配置文件,但是對于使用注解的類卻沒有使用包掃描,而是在Servlet初始化參數(shù)的classes里面加入了我們的Service組件的聲明暴露,對于這個問題需要后面我們再細細研究下這篇文章,主要分析介紹前端怎么直接調(diào)用后端2016-04-04
解決mapstruct在eclipse生成不了mapper的實現(xiàn)類問題
這篇文章主要介紹了解決mapstruct在eclipse生成不了mapper的實現(xiàn)類問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
Java實現(xiàn)簡易版聯(lián)網(wǎng)坦克對戰(zhàn)小游戲(附源碼)
這篇文章主要給大家介紹了關于Java實現(xiàn)簡易版聯(lián)網(wǎng)坦克對戰(zhàn)小游戲的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-04-04
淺談Java中OutOfMemoryError問題產(chǎn)生原因
本文主要介紹了淺談Java中OutOfMemoryError問題產(chǎn)生原因,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-06-06

