mybatisPlus实现创建时间、更新时间自动添加

对于添加数据和修改记录时都要对添加时间和修改时间也要同时做更新,在我们使用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
  • 17
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
MybatisPlus本身不提供自动创建表并插入数据的功能,但可以通过编写代码实现该功能。具体实现步骤如下: 1. 定义需要自动创建表的实体类,并在实体类上添加@Table注解,指定表名和主键生成策略等信息。 2. 在实体类中定义需要创建的数据库表的字段。 3. 在MybatisPlus的配置文件中添加自动建表的配置项,如下: ``` mybatis-plus: global-config: db-config: id-type: auto table-prefix: mp_ # 自动建表 logic-delete-value: 1 logic-not-delete-value: 0 # 自动建表 auto-create-table: true ``` 4. 在项目启动,判断是否存在该表,如果不存在,则通过MybatisPlus的代码生成器生成表和实体类,并向表中插入数据。 ``` // 判断表是否存在 boolean tableExist = false; try { Connection conn = dataSource.getConnection(); DatabaseMetaData metaData = conn.getMetaData(); ResultSet rs = metaData.getTables(null, null, tableName, null); while (rs.next()) { String name = rs.getString("TABLE_NAME"); if (tableName.equalsIgnoreCase(name)) { tableExist = true; break; } } } catch (SQLException e) { e.printStackTrace(); } // 如果表不存在,则通过代码生成器生成表和实体类,并向表中插入数据 if (!tableExist) { AutoGenerator mpg = new AutoGenerator(); // 配置数据源 mpg.setDataSource(dataSourceConfig); // 包配置 mpg.setPackageInfo(new PackageConfig().setParent(packageName)); // 策略配置 mpg.setStrategy(new StrategyConfig() .setNaming(NamingStrategy.underline_to_camel) .setColumnNaming(NamingStrategy.underline_to_camel) .setEntityLombokModel(true) .setRestControllerStyle(true) .setInclude(tableName) .setControllerMappingHyphenStyle(true) .setTablePrefix(tablePrefix) ); // 执行生成代码 mpg.execute(); // 向表中插入数据 List<Entity> dataList = new ArrayList<>(); // 构造数据 ... // 批量插入数据 boolean insertResult = entityService.saveBatch(dataList); } ``` 需要注意的是,自动建表和数据插入的功能可能存在一些安全风险,因此在使用需要谨慎考虑,避免出现意外情况。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值