添加拦截器
如果你需要对dao的内置方法做一些处理,可以使用DAO拦截器DaoInterceptor
了解DAO拦截器
实现并配置拦截器
示例实现一个伪删除的拦截器,将Delete语句拦截为伪删除的Update语句
java
@Component// 使用huiche-spring-boot-starter时,注册为bean即可自动启用该拦截器
public class LogicalDeleteInterceptor implements DaoInterceptor {
@Override
public Statement beforeDelete(Class<?> entityClass, Statement statement) {
// 判断当前类是需要逻辑删除的类(可以使用伪删除父类判断,也可自行使用其他逻辑)
// 判断当前语句是Delete语句,没有被其他拦截器修改
if (Artist.class.isAssignableFrom(entityClass) &&
statement instanceof Delete delete) {
// 获取原Delete语句的条件,创建新的Update语句
return Sql.update(entityClass)
.set("isDel", true)
.where(delete.wheres());
}
return statement;
}
}后续执行dao的delete系列方法,删除需要伪删除的表时,即可实际执行为Update语句