# mybatis-plus配置控制台打印sql语句:
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-field: logicFlag
logic-delete-value: 1 #默认是1
logic-not-delete-value: -1 #默认是0
id-type: auto
然后在实体类的属性上面加上@TableLogic注解就行
@Data
@TableName("tbl_user")
public class User {
private Integer id;
//插入和更新操作都会进行字段填充
@TableField(fill = FieldFill.INSERT_UPDATE)
private String name;
@TableLogic //逻辑删除字段
private Integer logicFlag;
}
@Data
@TableName("tbl_user")
public class User {
private Integer id;
//插入和更新操作都会进行字段填充
@TableField(fill = FieldFill.INSERT_UPDATE)
private String name;
@TableLogic(value = "1",delval = "-1") //逻辑删除字段
private Integer logicFlag;
}
数据库初始数据
现在逻辑删除id为2的这条数据
@Test
public void testLogicDelete(){
Integer i = userMapper.deleteById(2);
System.out.println("i="+i);
}
可以看到,控制台输出的sql语句是更新,而不是删除。会将logic_flag字段设置成-1(-1是我们在application.yml或者@TableLogic注解中指定的值)
这时查询id为2的这条数据(被逻辑删除的数据)
@Test
public void testLogicDelete(){
User user = userMapper.selectById(2);
System.out.println(user);
}
可以看到,控制台输出的sql语句自动带上了logic_flag=1的条件,所以查询出来的结果为空,但是数据库中的数据是真实存在的。