Skip to content

添加拦截器

如果你需要对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语句