当前位置: 首页 > article >正文

DBUtils中QueryRunner(空参,传数据源)构造方法的区别及应用场景

关于学习Spring框架时重构DAO层时,遇到的QueryRunner构造方法的问题,回忆MySQL中DBUtils部分

1. 空参构造方法 new QueryRunner()

特点
  • 不绑定数据源QueryRunner 实例内部没有 DataSource,因此无法自动获取连接。

  • 手动管理连接:调用者必须自行获取 Connection,并在执行数据库操作时显式传入。

底层机制
  • 当调用 query() 或 update() 方法时,QueryRunner 发现自身没有 DataSource,会强制要求调用者提供 Connection

2. 带数据源的构造方法 new QueryRunner(DataSource ds)

特点
  • 绑定数据源QueryRunner 实例持有 DataSource,可自动管理连接的获取和释放。

  • 自动管理连接:每次操作时,QueryRunner 会从 DataSource 获取新连接,操作完成后自动关闭连接。

底层机制
  • 当调用 query() 或 update() 方法时,QueryRunner 通过 DataSource.getConnection() 获取连接,并在 finally 块中关闭连接。

关键对比

特性空参构造 new QueryRunner()带数据源构造 new QueryRunner(DataSource ds)
连接来源必须由调用者显式传入 Connection自动从 DataSource 获取新连接
连接管理手动控制(开启、提交、回滚、关闭)自动获取和关闭连接
事务支持✅ 支持(同一连接多次操作)❌ 不支持(每次操作独立连接)
资源泄漏风险需谨慎处理 Connection 关闭无风险(自动关闭)
代码复杂度较高(需自行管理连接)较低(简化代码)

总结

  • 空参构造 + 显式传 Connection的 QueryRunner 适用于需要手动控制事务的场景,但需自行管理连接。

  • 带数据源构造的 QueryRunner 适用于无事务需求的简单操作,自动化程度更高。


http://www.kler.cn/a/528111.html

相关文章:

  • Java 大视界 -- Java 大数据在自动驾驶中的数据处理与决策支持(68)
  • 优盘恢复原始容量工具
  • [Collection与数据结构] B树与B+树
  • 观察者模式和订阅发布模式的关系
  • 单链表专题(中)
  • UE5 GAS RPG Character Classes
  • 智能小区物业管理系统打造高效智能社区服务新生态
  • PHP Mail:高效邮件发送解决方案详解
  • AMS仿真方法
  • SQL进阶实战技巧:断点去重技术详解
  • 鸿蒙物流项目之基础结构
  • 解决Django非ORM模型提示初始化request问题
  • 文件读写操作
  • Sui 年度展望:2025 是走向主流的一年,将 Sui 打造成体验最友好的平台
  • DBeaver连接MySQL提示Access denied for user ‘‘@‘ip‘ (using password: YES)的解决方法
  • MySQL基础-多表查询
  • TensorFlow 示例摄氏度到华氏度的转换(二)
  • MySQL--》日志与主从复制的实战技巧
  • 【VM】VirtualBox安装ubuntu22.04虚拟机
  • 思考:从普通用户的角度而言,大模型选择的初步考量
  • p1044 栈
  • pytorch实现循环神经网络
  • 【开源免费】基于Vue和SpringBoot的医院挂号就诊系统(附论文)
  • 网络工程师 (10)设备管理
  • 用 HTML、CSS 和 JavaScript 实现抽奖转盘效果
  • ZZNUOJ(C/C++)基础练习1041——1050(详解版)