mybatis拦截器



一、MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用

默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:(摘自官网http://mybatis.github.io/mybatis-3/zh/configuration.html

  • Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
  • ParameterHandler (getParameterObject, setParameters)
  • ResultSetHandler (handleResultSets, handleOutputParameters)
  • StatementHandler (prepare, parameterize, batch, update, query)

  二、当执行查询时

调用过程:SqlSession.selectList -- >> Executor.query -->> StatementHandler.query 返回结果,那么参数的设置是在哪呢?

StatementHandler有3个子类:SimpleStatementHandler、PreparedStatementHandler、CallableStatementHandler,

分别对应java.sql的Statement, PreparedStatement,CallableStatement。

在执行Executor.query时,创建Statement(StatementHandler.prepare)后会执行StatementHandler的parameterize,也就是参数化设置。查看源码发现调用的时ParameterHandler 的setParameters方法,在该方法中会设置对应的参数。

三、在查询过程中想要做一些额外的工作。例如:分页等

则可以通过mybatis的拦截器,拦截查询方法:

1、拦截Executor的query方法。拦截多个参数的方法。如果拦截参数少的那个方法,则可以在拦截器中参数源码自定义调用。

2、StatementHandler 的query方法

3、ResultSetHandler 的handleResultSets或handleOutputParameters,直接对结果进行处理

在拦截器中可以修改SQL,设置参数等一系列自定义功能。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值