在线咨询 400-826-1668
回到顶部
ARTICLE DETAIL

资讯详情

深耕国风建站与运营引流的一线实战洞察。

mybatis中的插件

mybatis中的插件 mybatis支持配置插件实现自定义的功能增强。默认情况下MyBatis 允许使用插件来拦截的方法调用包括Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)ParameterHandler (getParameterObject, setParameters)ResultSetHandler (handleResultSets, handleOutputParameters)StatementHandler (prepare, parameterize, batch, update, query)若配置了插件构建时则生成对应的代理类从而实现功能增强。PageHelper分页插件PageHelper通过拦截Executor的query方法实现对查询方法的增强(查询总数、添加分页参数等)支持分页查询。使用步骤1、导入PageHelper包2、mybatis配置文件中指定插件类3、业务代码执行查询前指定分页参数插件执行流程插件都是通过JDK动态代理生成拦截对象的代理类实现的。以PageHelper为例核心类为PageInterceptor该拦截器实现了mybatis的Interceptor接口mybatis源码中预留了执行插件增强的逻辑若有插件则生成对应类的代理从而对目标方法进行增强。因为配置文件中配置了PageInterceptor所以在生成config对象时InterceptorChain会添加对应的拦截器。创建sqlsession时会创建执行器Executor,若是存在拦截器将会生成对应执行器的动态代理类。因为executor是代理对象所以执行方法时会执行相应的增强逻辑。Executor中涉及很多方法哪些方法要执行拦截增强是通过拦截器中的Signature标签指定。类名、方法名及形参列表都要匹配才会拦截。当执行目标方法时最终会来到intercept执行增强逻辑。查询总数拼接sql业务代码中设置的分页参数会存储到ThreadLocal中处理分页参数时会从ThreadLocal取。
返回列表