【笔记-MyBatis】StatementHandler

Author:赵志乾
Date:2024-07-15
Declaration:All Right Reserved!!!

1. 简介

        StatementHandler封装了对JDBC各类Statement的操作,如设置fetchSize属性、设置查询超时时间、与数据库进行交互等;

public interface StatementHandler {

  // 用于创建JDBC Statement对象,并完成Statement对象的属性设置
  Statement prepare(Connection connection, Integer transactionTimeout) throws SQLException;
  // 用于使用MyBatis中的ParameterHandler组件为PreparedStatement和CallableStatement参数占位符设置值
  void parameterize(Statement statement) throws SQLException;
  // 将SQL命令添加到批处理列表中
  void batch(Statement statement) throws SQLException;
  // 调用Statement对象的execute方法执行更新语句,如:INSERT、UPDATE、DELETE语句
  int update(Statement statement) throws SQLException;
  // 执行查询语句,并使用ResultSetHandler处理查询结果集
  <E> List<E> query(Statement statement, ResultHandler resultHandler) throws SQLException;
  // 带游标的查询,返回Cursor对象,能够通过Iterator动态地从数据库中加载数据,适用于查询数据量较大的情况,避免将所有数据加载到内存中
  <E> Cursor<E> queryCursor(Statement statement) throws SQLException;
  // 获取Mapper配置的SQL信息,BoundSql封装了动态SQL解析后的SQL文本和参数映射信息
  BoundSql getBoundSql();
  // 获取ParameterHandler实例
  ParameterHandler getParameterHandler();
}

2. 类体系

        BaseStatementHandler是一个抽象类,封装了通用的处理逻辑及方法执行流程,具体方法由子类实现,使用了模板模式;

  • SimpleStatementHandler:封装了对JDBC Statement对象的操作;
  • PreparedStatementHandler:封装了对JDBC PreparedStatement对象的操作;
  • CallableStatementHandler:封装了对JDBC CallableStatement对象的操作;
  • RoutingStatementHandler:依据 Mapper配置中的statementType属性(取值为STATEMENT、PREPARED、CALLABLE)创建对应的StatementHandler实现;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫白小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值