对于添加数据和修改记录时都要对添加时间和修改时间也要同时做更新,在我们使用mybatis时,需要手动记录当前时间为创建时间,当我们使用mybatisPlus时,就不想mybatis那样麻烦的手动去记录时间,只需要添加一个注解就可以实现自动添加功能。
(1)在表中的字段与类中的属性字段要对应:
在这里插入图片描述

    private Date createTime;
    private Date updateTime;

(2)在属性加上相关注解

    @TableField(fill = FieldFill.INSERT) //创建时自动填充
    private Date createTime;
    
    @TableField(fill = FieldFill.INSERT_UPDATE)//创建与修改时自动填充
    private Date updateTime;

(3)加配置类

@Component
public class DateConfig implements MetaObjectHandler {

    /**
     * 使用mp做添加操作时候,这个方法执行
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        //设置属性值
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }

    /**
     * 使用mp做修改操作时候,这个方法执行
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }
}

(4)测试
添加操作:

   @Test
    public void test02() {
        User user = new User();
        user.setAge(18);
        user.setEmail("1961871256@qq.com");
        user.setName("刘老师");
        int result = userMapper.insert(user);
        System.out.println(result);
    }
执行sql如下:
==>  Preparing: INSERT INTO user ( id, name, age, email, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ? ) 
==> Parameters: 1388016524932960257(Long), 刘老师(String), 18(Integer), 1961871256@qq.com(String), 2021-04-30 14:25:02.303(Timestamp), 2021-04-30 14:25:02.303(Timestamp)
<==    Updates: 1

修改操作:

@Test
    public void test03() {
        User user = new User();
        user.setName("王老师");
        user.setId(1386597548726165506l);
        int result = userMapper.updateById(user);
        System.out.println(result);
    }
执行sql如下:
==>  Preparing: UPDATE user SET name=?, update_time=? WHERE id=? 
==> Parameters: 王老师(String), 2021-04-30 14:27:15.918(Timestamp), 1386597548726165506(Long)
<==    Updates: 1
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐