mybatisplus中,自动插入时间和更新时间

该代码实现了一个自定义的MetaObjectHandler,用于在MyBatis-Plus中自动填充实体类的创建时间和更新时间。插入时,填充创建时间和更新时间;更新时,仅填充更新时间。字段使用@TableField注解指定填充策略。
摘要由CSDN通过智能技术生成
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * @author :zzd
 * @apiNote :mp自动填充时间配置类
 * @date : 2023-03-30 16:48
 */
@Component
@Slf4j
public class CommonMetaObjectHandler implements MetaObjectHandler {

    /**
     * @apiNote 新增
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("自动创建时间");
        this.strictInsertFill(metaObject,"createTime", Date.class,new Date());
        this.strictInsertFill(metaObject,"updateTime",Date.class,new Date());
    }

    /**
     * @apiNote 修改
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("自动更新时间");
        this.strictInsertFill(metaObject,"updateTime",Date.class,new Date());
    }
}

然后在实体类上面,时间字段添加如下

@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间")
private Date createTime;

@TableField(fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty(value = "更新时间")
private Date updateTime;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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); } ``` 需要注意的是,自动建表和数据插入的功能可能存在一些安全风险,因此在使用需要谨慎考虑,避免出现意外情况。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值