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

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.lryc.cn/news/530003.html

相关文章:

  • STM32 TIM输入捕获 测量频率
  • Autosar-以太网是怎么运行的?(Davinci配置部分)
  • 16.[前端开发]Day16-HTML+CSS阶段练习(网易云音乐五)
  • langchain 实现多智能体多轮对话
  • Java-数据结构-优先级队列(堆)
  • C++实现状态模式
  • FreeRTOS学习笔记2:FreeRTOS的基础知识
  • 计算机网络之计算机网络的分类
  • 从理论到实践:Linux 进程替换与 exec 系列函数
  • Flutter常用Widget小部件
  • 微信小程序实战0 设置
  • 2025开源DouyinLiveRecorder全平台直播间录制工具整合包,多直播同时录制、教学直播录制、教学视频推送、简单易用不占内存
  • 使用 postman 测试思源笔记接口
  • 当WebGIS遇到智慧文旅-以长沙市不绕路旅游攻略为例
  • 阿里最新普通x231 逆向分析
  • php的使用及storm环境部署
  • 高可用 Keepalived 服务部署流程
  • 【新春特辑】2025年1月科技浪潮中的AI最新时事与科技趋势
  • 解决Django非ORM模型提示初始化request问题
  • G. XOUR
  • 有没有个性化的UML图例
  • 【RAG】SKLearnVectorStore 避免使用gpt4all会connection err
  • vue框架技术相关概述以及前端框架整合
  • Spring Boot + Facade Pattern : 通过统一接口简化多模块业务
  • 牛客周赛 Round 78
  • 【机器学习】自定义数据集 ,使用朴素贝叶斯对其进行分类
  • 02.01 生产者消费者
  • mac 手工安装OpenSSL 3.4.0
  • kamailio-ACC_JSON模块详解【后端语言go】
  • ArkTS语言介绍