问题
这几天写的SpringBoot项目一直有个问题解决不了,Mybatis-Plus的selectById方法返回null,id和其与数据库的映射也没有错,但就是查不到数据。
原因
该条数据在数据的is_deleted字段为null,并且is_deleted对应的实体类中我是把它设置为了逻辑删除,如下面所示。
@ApiModelProperty(value = "逻辑删除 1(true)已删除, 0(false)未删除")
@TableLogic(value = "0",delval = "1")
//@TableField(fill = FieldFill.INSERT)
private Integer isDeleted;
解决办法
利用Mybatis-Plus的设置默认值的功能在每次添加数据的时候给上一个默认值0,记住实体类的该属性需要加上@TableLogic注解!
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
//设置isDelete属性为0
this.setFieldValByName("isDeleted", 0, metaObject);
//第二个参数是属性名称
this.setFieldValByName("gmtCreate", new Date(), metaObject);
this.setFieldValByName("gmtModified",new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("gmtModified",new Date(), metaObject);
}
}
@ApiModelProperty(value = "逻辑删除 1(true)已删除, 0(false)未删除")
@TableLogic(value = "0",delval = "1")
@TableField(fill = FieldFill.INSERT)
private Integer isDeleted;