一、逻辑删除
1.逻辑删除后,将不会被查询出来。
mybatis-plus:
global-config:
db-config:
logic-not-delete-value: 0
logic-delete-value: 1
@TableLogic
@TableField(select = false) // 查询时不显示此字段
private Integer isDel;
@Autowired
private UserMapper userMapper;
/**
* 逻辑删除
*/
@Test
public void delete01() {
int i = userMapper.deleteById(10);
System.out.println(i);
}
2.查询中排除逻辑删除字段
- 在Wrappers.<User>lambdaQuery().eq(User::getIsDel, 0);
- 自定义@TableField(select = false)
二.自动填充
本次针对数据表中的create_time、update_time字段进行自动填充实例。
1.自动填充实例
public enum FieldFill {
// 默认不处理
DEFAULT,
// 添加时候自动填充
INSERT,
// 修改时候自动填充
UPDATE,
// 添加和修改时都自动填充
INSERT_UPDATE;
private FieldFill() {
}
}
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
setInsertFieldValByName("createTime", LocalDateTime.now(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
setUpdateFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
}
/**
* 自动修改
*/
@Test
public void updateTest01() {
User user = new User();
user.setName("苏小贱");
user.setId(13L);
int i = userMapper.updateById(user);
log.info("i:" + i);
}
/**
* 自动添加
*/
@Test
public void insertTest01() {
User user = new User();
user.setName("苏汉超");
user.setAge(40);
user.setEmail("suhanchao@198.com");
user.setPhone("13498701243");
user.setParentId