Appearance
逻辑删除插件
逻辑删除不仅仅将删除语句改成update语句,而且还会对查询或更新SQL追求逻辑删除条件。
注入器:LogicInject
处理器:LogicHandler
java
public interface LogicHandler {
/**
* 判断是否应用逻辑删除
*
* @param methodInfo mapper方法详尽信息
* @param tableInfo 主表详尽信息
* @return
*/
default boolean isLogic(MethodInfo methodInfo, TableInfo tableInfo) {
return tableInfo.getFieldName(getLogicColumn()) != null;
}
/**
* 删除后的标识
*
* @return
*/
default String getDeletedValue() {
return "1";
}
/**
* 逻辑删除字段
*
* @return
*/
String getLogicColumn();
}开启逻辑插件方式一
java
/**
* 开启插件方式一
*
* @return
*/
@Bean
public Inject[] injects() {
/**
* 开启插件
*/
return new Inject[]{
new LogicInject(new LogicHandler() {
@Override
public boolean isLogic(MethodInfo methodInfo, TableInfo tableInfo) {
return tableInfo.getFieldName(getLogicColumn()) != null;
}
@Override
public String getDeletedValue() {
return "1";
}
@Override
public String getLogicColumn() {
return "del_flag";
}
})
};
}开启数据权限插件方式二
java
/**
* 开启插件方式二
*
* @return
*/
@Bean
public InjectFactory injectFactory() {
InjectFactory injectFactory = new DefaultInjectFactory();
/**
* 开启逻辑删除插件
*/
injectFactory.injects(
new LogicInject(new LogicHandler() {
@Override
public boolean isLogic(MethodInfo methodInfo, TableInfo tableInfo) {
return tableInfo.getFieldName(getLogicColumn()) != null;
}
@Override
public String getDeletedValue() {
return "1";
}
@Override
public String getLogicColumn() {
return "del_flag";
}
}));
return injectFactory;
}