jdbc执行流程
1. 注册驱动
2. 创建数据库操作对象
3. 执行sql语句
4 .处理操作结果
5 .关闭连接释放资源
MyBatis 执行流程
Executor执行器、MappedStatement 对象、 StatementHandler 语句处理器 关系可以用以下步骤概括
-
用户通过 SqlSession 调用一个方法,SqlSession 通过 Executor 找到对应的 MappedStatement。
-
Executor 使用找到的 MappedStatement,结合请求参数,通过 StatementHandler 创建并配置 JDBC Statement。
-
StatementHandler 根据 MappedStatement 中的 SQL 语句及参数映射信息,设置 SQL 参数并执行 SQL。
-
执行 SQL 后,StatementHandler 再次发挥作用,处理数据库返回的结果集,并将其按照 MappedStatement 中定义的结果映射转换为 Java 对象,最终返回给客户端。
MyBatis拦截器四种类型
1 Executor 执行器拦截器
2 StatamentHandler 语句拦截
3 ParamaterHandler 参数拦截
4 resultHandler 结果拦截
反射
应用场景
MyBatis拦截器处理参数时
使用hutool工具中的ReflectUtil 的getField()方法获得参数参数对象
setFieldValue()给这个字段赋值
MyBatis拦截器执行流程 (AOP)
- 创建自定义拦截器类 : 实现ibatis下的Intercepter接口重写Interceptor方法
- 使用Intercepts注解设置拦截类型、拦截点
@Intercepts(
// type: 拦截器类型
// methd: 拦截器类型中的方法
// args: 方法参数
@Signature(type = ParameterHandler.class,method = "setParameters",args ={PreparedStatement.class})
)
3.实现方法:其中 intercept
方法是拦截器的核心,用于执行拦截逻辑;plugin
方法用于包装目标对象,返回一个增强的代理对象;setProperties
方法用于设置拦截器属性。
记得加component注解注入IOC容器