MyBatis-plus自动填充
程序员文章站
2022-06-21 14:54:42
MyBatis-plus自动填充我们在项目中经常会遇到一些数据,每次都是用相同的方式填充,比如记录的创建时间,更新时间等,可以使用MyBatis-plus的自动填充,或者实体类的set方式来实现(1).在数据库的数据包中添加字段:create_time,update_time等需要自动填充的字段,我这里只做简单的介绍我们的实体类可以使用Lombok进行统一管理也可以自行手动生成set和get等方法(我这里使用Lombok)(2).在实体类上添加注解@Datapublic class User {...
MyBatis-plus自动填充
我们在项目中经常会遇到一些数据,每次都是用相同的方式填充,比如记录的创建时间,更新时间等,可以使用MyBatis-plus的自动填充,或者实体类的set方式来实现
(1).在数据库的数据包中添加字段:create_time,update_time等需要自动填充的字段,我这里只做简单的介绍
我们的实体类可以使用Lombok进行统一管理也可以自行手动生成set和get等方法(我这里使用Lombok)
(2).在实体类上添加注解
@Data
public class User {
/**
* 主键策略:
* @TableId(type = IdType.AUTO) AUTO:自动增长
*
* Mybties-plus自带策略:
* ID_WORKER:MP自带策略,生成19位值,数字类型使用这种策略,比如long
* ID_WORKER_STR:MP自带策略,生成19位值,字符串类型使用这种策略,比如String
*
* INPUT:需要自行设置id值
* NONE:没有任何策略,需要自行输入,所以一般使用INPUT
* UUID:生成一个随机的唯一值
*
*
* 雪花算法
*/
@TableId(type = IdType.AUTO)
private Long id ;
private String name;
private int age;
private String email;
/**
* FieldFill的参数详情:
*
* DEFAULT:默认不处理
* INSERT:插入填充字段
* UPDATE:更新填充字段
* INSERT_UPDATE:插入和更新填充字段
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
(3).实现元对象处理器接口,在util包下创建MyMetaObjectHandler类,并实现MetaObjectHandler接口(注:不要忘记添加@Component注解交给Spring进行管理,我测试的时候将注解忘记了)
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
//this.setFieldValByName("要进行填充的字段",自动填充的操作,metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
(4).测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class RunTest {
@Autowired
private UserDao userDao ;
//添加操作
@Test
public void insert(){
User user = new User();
user.setName("mary");
user.setAge(301);
user.setEmail("mary@qq.com");
int insert = userDao.insert(user);
System.out.println(insert);
}
//使用mybatis-plus实修改操作
@Test
public void updateUser(){
User user = new User();
user.setId(1329060020435836931L);
user.setEmail("jock@qq.com");
user.setAge(3);
user.setName("jock");
int i = userDao.updateById(user);
System.out.println(i);
}
}
欢迎大家前来指教
本文地址:https://blog.csdn.net/qq_45280147/article/details/109825856