zoukankan      html  css  js  c++  java
  • Mybatis核心拦截器

    一:背景,

      很多业务场景下我们都需要拦截器sql,达到不入侵原有代码的业务处理一些东西,比如分页,数据权限过滤操作,Sql执行时间监控等等,这里我们就要用到Mybatis拦截器Interceptor 。

    Mybatis 的核心介绍

    • configuration.初始化基础配置,比如Mybatis的别名,一些重要的类型对象,Mybatis的所有的配置信息都维持在Configuration对象之中 。
    • SqlSessionfactory ,Sqlsession工厂。
    • Sqlsession 作为mybatis的工作的主要的顶层api ,表示何数据库交互的会话,完成必要数据库的增删查改的一些功能。
    • Executor Mybatis的执行器。是Mybatis调度的核心,负责sql语句的生成何查询缓存的威威。
    • StatementHandler 封装了JDBC Statement 操作。比如参数的设置,将state吗结果转化为list集合操作等等。
    • ParameterHandler 负责将JDBC返回参数转化为JDBC statment 的参数
    • ResultSethandler 负责将JDBC返回的Resultset集对象转化为list类型的集合
    • TypeHandler 负责将数据库的类型何实体类型之间的转化何映射
    • MappedStatement ,MappedStatement维护一条Select,update,delete,insert 节点的封装。
    • SqlSource 负责根据用户传递的parameterObject 动态的生成一条sql语句。
    • Sboundsql 表示动态生成的sql何对应的参数信息。

      

       Mybatis 的原理何实现

    • Mybatis 支持对Executor,StatmentHanderl ,Pameterhandler何ResultSethandler 接口进行拦截。也就是说会对四种对象进行代理。
    • 通过SqlSessionFactoryBean,
    • 拦截器 ,可以通过配置拦截器链,把将要拦截的任务放到相应的拦截器的下边以共他们取实现。
    • 自己对与拦截器的实现原理实现的猜想。
    • 从以下带么可以看出mybatis在实例化Executor ,ParameterHandler,resultsetHandler,StatementHanderls,在实例化四大接口对象的时候,就回调用interceptorChain.pluginAll() 方法插进去,其实就是循环执行拦截器链所有的连接的plugin()fangfa .
    • mybatis 官方推荐的方法是plugin方法是plugin.wrap()方法,这个类就是我们上表的TargetProxy代理

    我们自己实现拦截器的代码:

  • 相关阅读:
    Centos 7 zabbix 实战应用
    Centos7 Zabbix添加主机、图形、触发器
    Centos7 Zabbix监控部署
    Centos7 Ntp 时间服务器
    Linux 150命令之查看文件及内容处理命令 cat tac less head tail cut
    Kickstart 安装centos7
    Centos7与Centos6的区别
    Linux 150命令之 文件和目录操作命令 chattr lsattr find
    Linux 发展史与vm安装linux centos 6.9
    Linux介绍
  • 原文地址:https://www.cnblogs.com/dousil/p/13198590.html
Copyright © 2011-2022 走看看