mybatisPlus的InnerInterceptor接口讲解

MyBatis-Plus 是一个 MyBatis 的增强工具包,提供了很多实用的功能,例如分页、数据范围控制、性能分析等。其中,InnerInterceptor 接口就是 MyBatis-Plus 提供的一个拦截器接口,用于实现一些常用的 SQL 处理逻辑。

InnerInterceptor 接口继承自 MyBatis 的 Interceptor 接口,并添加了一些新的方法,用于处理 MyBatis-Plus 的特定功能。下面我们来看一下 InnerInterceptor 接口的定义:

public interface InnerInterceptor {
    default boolean willDoQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
        return true;
    }

    default void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
    }

    default boolean willDoUpdate(Executor executor, MappedStatement ms, Object parameter) throws SQLException {
        return true;
    }

    default void beforeUpdate(Executor executor, MappedStatement ms, Object parameter) throws SQLException {
    }

    default void beforePrepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
    }

    default void beforeGetBoundSql(StatementHandler sh) {
    }

    default void setProperties(Properties properties) {
    }
    
    default Executor pluginExecutor(Executor executor) {
        return executor;
    }
}

InnerInterceptor接口定义了以下默认方法:

willDoQuery: 当执行查询操作时,MyBatis 会调用该方法,判断是否需要执行查询操作。默认返回true,表示继续执行查询操作,如果需要阻止查询操作,则可以在实现该方法时返回false。
beforeQuery: 在执行查询操作之前,MyBatis 会调用该方法。通过实现该方法,可以在查询之前进行一些必要的操作,例如设置数据范围、修改 SQL 等。
willDoUpdate: 当执行更新操作时,MyBatis 会调用该方法,判断是否需要执行更新操作。默认返回true,表示继续执行更新操作,如果需要阻止更新操作,则可以在实现该方法时返回false。
beforeUpdate: 在执行更新操作之前,MyBatis 会调用该方法。通过实现该方法,可以在更新之前进行一些必要的操作,例如设置更新时间、加密数据等。
beforePrepare: 在执行 SQL 之前,MyBatis 会调用该方法。通过实现该方法,可以在 SQL 执行之前进行一些必要的操作,例如设置事务隔离级别、设置查询超时时间等。
beforeGetBoundSql: 在获取 BoundSql 对象之前,MyBatis 会调用该方法。通过实现该方法,可以在获取 BoundSql 对象之前进行一些必要的操作,例如设置参数、修改 SQL 等。
setProperties: 设置拦截器属性。该方法在创建拦截器实例时调用,用于设置拦截器的属性。
pluginExecutor: 在创建 Executor 对象时调用,可以在这里对 Executor 对象进行包装或其他处理。

需要注意的是,这些默认方法都是可选的,可以根据具体的需求,选择性地实现其中一些方法。同时,开发者也可以根据自己的需求,定义自己的拦截器接口,并实现相应的拦截器逻辑。

注意,InnerInterceptor 接口并不是必须实现的接口,可以根据自己的需求选择性地实现其中的方法。同时,MyBatis-Plus 还提供了很多其他的拦截器接口,例如PaginationInnerInterceptor、OptimisticLockerInnerInterceptor 等,它们都继承自 InnerInterceptor 接口,并添加了特定的功能。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值