600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Mybatis-Plus 使用自定义注入器后 查询条件中不再添加逻辑删除字段限定条件

Mybatis-Plus 使用自定义注入器后 查询条件中不再添加逻辑删除字段限定条件

时间:2024-01-26 16:06:27

相关推荐

Mybatis-Plus 使用自定义注入器后 查询条件中不再添加逻辑删除字段限定条件

例如项目中加入如下注入器代码后,查询条件中不再添加逻辑删除字段限定条件

/*** 自定义Sql注入** @author nieqiurong /8/11 20:23.*/@Componentpublic class MySqlInjector extends DefaultSqlInjector {@Overridepublic List<AbstractMethod> getMethodList(Class<?> mapperClass) {List<AbstractMethod> methodList = super.getMethodList(mapperClass);//增加自定义方法methodList.add(new DeleteAll());methodList.add(new FindOne());/*** 以下 3 个为内置选装件* 头 2 个支持字段筛选函数*/// 例: 不要指定了 update 填充的字段methodList.add(new InsertBatchSomeColumn(i -> i.getFieldFill() != FieldFill.UPDATE));methodList.add(new AlwaysUpdateSomeColumnById());methodList.add(new LogicDeleteByIdWithFill());return methodList;}}

配置的逻辑删除字段:

@Datapublic class BaseEntity implements Serializable {/*** 删除标记 0:未删除 1:已删除*/@ApiModelProperty(value="删除标记 0:未删除 1:已删除")@TableLogic(value = Constant.DELETE_STATUS_UNDELETED, delval = Constant.DELETE_STATUS_DELETED)@TableField(select = false)private String deleteStatus;/*** 创建时间*/@ApiModelProperty(value="创建时间")@TableField(fill = FieldFill.INSERT)private LocalDateTime createTime;/*** 更新时间*/@ApiModelProperty(value="更新时间")@TableField(fill = FieldFill.UPDATE)private LocalDateTime updateTime;}

打印的查询语句中,没有自动加上delete_status = '0'

原因是注入器只能存在一个,使用了DefaultSqlInjector,则逻辑删除注入器LogicSqlInjector就不起作用。解决方法是可以使自定义注入器继承自LogicSqlInjector,就既能使用逻辑删除又能加入自定义方法了

@Componentpublic class MySqlInjector extends LogicSqlInjector

改造后再运行,就又自动加上delete_status = '0'条件了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。