mysql随机生成id
@Data @AllArgsConstructor @NoArgsConstructor public class User { //@TableId(type = IdType.ID_WORKER) //mp自带策略,生成19位值,数字类型使用这种策略,比如long //@TableId(type = IdType.ID_WORKER_STR) //mp自带策略,生成19位值,字符串类型使用这种策略 @TableId(type = IdType.ID_WORKER) private Long id;
一、实体类加上注解
//自动填充 @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime;
二、加上消息处理机制类
@Component public class MyMetaObjectHandler implements MetaObjectHandler { //使用mp实现添加操作,执行此方法 @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("createTime",new Date(),metaObject); this.setFieldValByName("updateTime",new Date(),metaObject); } //使用mp实现修改操作,执行此方式 @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("updateTime",new Date(),metaObject); } }
三、version乐观锁
实体类:
@Version @TableField(fill = FieldFill.INSERT) private Integer version;//版本号
消息处理机制类:(初始化version为1)
@Component public class MyMetaObjectHandler implements MetaObjectHandler { //使用mp实现添加操作,执行此方法 @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("createTime",new Date(),metaObject); this.setFieldValByName("updateTime",new Date(),metaObject); this.setFieldValByName("version",1,metaObject); }
配置类:
@Configuration public class Mpconfig { /** * 旧版 */ @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor() { return new OptimisticLockerInterceptor(); }
测试类:(进行修改操作,version进行递增)
//乐观锁 @Test public void optimisticLockerTest(){ User user = userMapper.selectById(1414578042713444353L); user.setName("小胡"); userMapper.updateById(user); }