2、自动填充
项目中经常会遇到一些数据,每次都使用相同的方式填充,例如记录的创建时间,更新时间等。
我们可以使用MyBatis Plus的自动填充功能,完成这些字段的赋值工作:
1)数据库表中添加自动填充字段
在User表中添加datetime类型的新的字段 create_time、update_time
2)实体类上添加属性以及注解
@Data
public class User {
...
//注意使用小驼峰,框架会自动将下划线转为小驼峰
//设置自动填充时机
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
3)实现元对象处理器接口
@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);
}
}
注意:不要忘记添加 @Component 注解
delete
1、根据id删除记录
//测试删除,物理删除
@Test
void testDelete() {
int row = userMapper.deleteById(1L);
System.out.println(row);
}
可以看到id为1的数据被删除
2、批量删除
//批量物理删除
@Test
void testDeleteBatch(){
int row = userMapper.deleteBatchIds(Arrays.asList(2, 3, 4));
System.out.println(row);
}
根据条件删除:
3、逻辑删除
物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据
逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录
1)数据库中添加 deleted字段
ALTER TABLE `user` ADD COLUMN `deleted` boolean DEFAULT 0
2)实体类添加deleted 字段
@TableLogic
private Integer deleted;
3)application.properties 加入配置
此为默认值,如果你的默认值和mp默认的一样,该配置可无
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
4)在 MybatisPlusConfig 中注册 逻辑删除Bean
//逻辑删除插件
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}