问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

dbutils是连接池么,跟普通连接池有什么区别

发布网友 发布时间:2022-05-02 00:21

我来回答

2个回答

懂视网 时间:2022-05-02 04:42

转自http://www.cnblogs.com/myit/p/4269165.html

我感觉Dbutils用的最多的就是对查询结果集的处理,就以这个开始了解Dbutils库。

查看源代码发现结果集的转换主要用于query,insert,insertBatch方法。

// 仅仅列出QueryRunner类的相关代码,其他略过
//-----------源码1 query方法 ------------------
 stmt = this.prepareStatement(conn, sql);
 this.fillStatement(stmt, params);
 rs = this.wrap(stmt.executeQuery());
 result = rsh.handle(rs); // 处理结果集
 
//-----------源码2 insert方法 ------------------
 stmt = conn.prepareStatement(sql, tatement.RETURN_GENERATED_KEYS);

 

 this.fillStatement(stmt, params);
 stmt.executeUpdate();
 ResultSet resultSet = stmt.getGeneratedKeys();
 generatedKeys = rsh.handle(resultSet); // 处理结果集
 
//-----------源码3 insertBatch方法 ------------------
 ResultSet rs = stmt.getGeneratedKeys();
 generatedKeys = rsh.handle(rs); // 处理结果集

 对ResultSet的转换主要围绕两个接口展开(ResultSetHandler<T> 和 RowProcessor)。

1、ResultSetHandler<T> ,关系图如下:

技术分享

      接口 ResultSetHandler 只有一个需要实现的方法 handle(ResultSet rs),我的理解这个方法是处理结果集的一个入口,每个结果集转换类都在自己的 handle 方法中处理自己的事情,这个可从前面的源码1、2、3中看出来,都是调用实现类的handle方法,再返回结果。

      ResultSetHandler  的实现类(结果集转换类)在 handle 方法中实现对结果集的处理,大部分会涉及到另一个接口 RowProcessor 及其实现类 BasicRowProcessor。

 2、RowProcessor,关系图如下:

技术分享

      RowProcessor 接口有4个需要实现的方法,具体用途可以很直观的从方法名中看出来。这几个方法都在结果转换类的 handle 方法中调用。需要注意如果需要将结果集转换为Bean,那么还会涉及到一个类 BeanProcessor 的使用。

3、ResultSetHandler 和 RowProcessor 的关系

       技术分享

      图虽然有点乱,凑合看也能看清楚。大部分的结果集都持有一个 RowProcessor 接口的引用。需要注意的是 ArrayHandler 这个类,因为其他类 RowProcessor 的引用都是从这个类获取的,这个类建立了 RowProcessor 实现类 BasicRowProcessor 的对象。

      需要注意其中的3个抽象类(AbstractKeyedHandler、AbstractListHandler、BaseResultSetHandler),它们的派生类才是可以使用的结果转换类。根据文档的说明,如果官方提供的这些转换类都不能满足你的要求,可以通过继承 BaseResultSetHandler 实现自己的结果集转换类。

DbUtils(一)

标签:param   返回   idt   proc   auto   转换   关系图   了解   实现   

热心网友 时间:2022-05-02 01:50

DBUtils不是连接池,是把一些操作数据库的东西封装起来了
比如关闭Connection,它里面有个方法,你直接传connection进去就可以了,不用自己写那么多代码去关了
Python DBUtils支持哪些数据库接口?

Python DBUtils 是一个专注于为Python应用提供强大数据库连接管理的库,特别适用于需要处理多线程环境的场景。它着重于创建稳固且持久的数据库连接池,确保在并发访问中资源的有效管理和复用。DBUtils的设计理念是兼容广泛的数据库接口,支持DB-API 2标准,这是一种业界广泛接受的数据库访问协议,使得它能够...

c3p0中 runner.query 和 beanhandler 这点不太明白是什么意思 求...

QueryRunner是dbutils提供的类 不是c3p0的 c3p0是连接池 dbutils是数据库操作工具 说参数:先说第三个 第一个是sql语句楼主你清楚 但是这sql里头有? 不是标准的sql语句 -他底层是preparestatement 具体操作是这样:-第三个参数是一个数组 QueryRunner会将里面下标为i的数据赋给第i+1个问号 -比如...

return queryRunner.query(connection, sql,new BeanHandler&lt;&gt;(clazz...

QueryRunner是dbutils提供的类 不是c3p0的 c3p0是连接池 dbutils是数据库操作工具 说参数:先说第三个 第一个是sql语句楼主你清楚 但是这sql里头有? 不是标准的sql语句 -他底层是preparestatement 具体操作是这样:-第三个参数是一个数组 QueryRunner会将里面下标为i的数据赋给第i+1个问号 -比如...

MySQL连接容易断开问题一天解决mysql一天就断开

连接池是一种解决连接断开问题的有效方式。连接池可以维护一组数据库连接,以供应用程序重用,从而减少连接重新启动的次数,提高应用程序的性能。使用连接池的方法如下:利用Python中的pymysql库来创建连接池 import pymysql from DBUtils.PersistentDB import PersistentDB mysql_pool = PersistentDB(pymysql,...

求助No module named DBUtils.PooledDB

缺少Mysql数据库连接池模块,可以通过以下指令进行网络安装:pip install DBUtils

Django如何使用数据库连接池(2023年最新整理)

如果你想要使用专用连接则使用:1.db=pool.connection(0)2.如果你不再需要这个连接了,则可以返回给连接池使用db.close()。你也可以使用相同的方法获取另一个连接。警告:在一个多线程环境,不要使用下面的方法:1.pool.connection().cursor().execute(...)2.3.db=pool.connection()4.5.cur=db.cursor()6.7.cur...

ystyle简介

在业务层和数据库操作层,ystyle提供了强大的注解功能,如自动注入、事务管理、单例模式以及动态代理,使得代码更加简洁易懂。对于数据库连接,ystyle内置了一个小型连接池,支持c3p0、proxool等外部连接池,如阿里巴巴的Druid,便于用户根据需要进行选择和配置。在数据库操作上,ystyle基于dbutils进行了封装,...

java学习有哪些课程

2、学习Java基础,包括Java语言、Java语法和各种基本算法,了解代码从写好到实现之间的流程。2、数据库开发,主要包括SQL基础、JDBC编程和JDBC高级应用。3、DHTML编程,主要包括HTML语言、JS语法、JS对象和DOM编程。4、Java、web编程,主要包括servlet开发、JSP开发和AJAX开发。5、学习真实实训项目,培养实操...

java后端需要学什么

3、JDBC:JDBC主要学习的内容有获取数据库连接、Apache-DBUtils实现CRUD操作、连接池、PreparedStatemet等。4、Java Web:Java Web主要学习的内容有Session应用、Servlet实现登录、JSTL、MVC模式、Filter等。5、框架:框架主要学习的有SSM、Spring Data JPA、Linux、Shiro等。总结:java后端开发需要学JavaSE、...

java先学什么

4. 深入理解缓存,连接池,注解,反射,泛型等知识 5. 能够运用所学知识完成自定义框架 知识点:1、数据库知识,范式,MySQL配置,命令,建库建表,数据的增删改查,约束,视图,存储过程,函数,触发器,事务,游标,建模工具。2、深入理解数据库管理系统通用知识及MySQL数据库的使用与管理。为Java后台...

什么是连接池什么是数据源 线程池和连接池的区别 数据库直连和连接池区别 jdbc连接池最大连接数 连接池有什么用 连接池是什么 jdbc连接池有哪些 druid连接池 socket连接池和线程池
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生怎么提高自己的拍照水平? 怎样能提高拍照水平 如何有效地提高摄影水平 长春伪满皇宫 MP4的内存卡能否用于手机 mp4的存储卡怎么用 mp4里扩展内存的闪存卡是指的SD卡么?那读卡器又是干什么用的呢? 我家的电脑c盘可用空间很小,请帮帮我 电脑C盘里可用空间太小,怎么办,帮帮我 投笔从戒和千头万绪是什么意思? 投笔从戒说明了一个什么道理?急!!! 尚赫产品怎么样? 特朗普撤回加州排放标准豁免权,特朗普和加州之间还有哪些“对抗”? fm2021穆科科踢什么位置 在特朗普和夫人梅拉尼娅参加感恩节时,为何被记者犀利提问? 氢气的制作成本高吗 天津尚赫公司央视曝光?还能做吗?感觉有点不太靠谱了?? 慢笔画顺序怎么写 尚赫净水机怎么样 国考教师资格证面试初中美术,请问是初一到初三的课抽吗?一般是试讲 教师资格证第一次美术没考过第二次可以不考美术换成别的学科吗 另外科目二也没过 没考过科目三 初中的 同一个苹果手机怎么同时登录两个 苹果手机如何双开? 作为职场新人,如何增加自己的不可替代性? 如何加强护理团队建设 作为一名管理者,你认为公司在管理过程中还有哪些需要改进的地方?你有什么建设 如何做一个好领导,让员工更好的发挥效率.团队领导 当代的组织文化建设,应该突出什么方面呢? 在青年工作中如何培养团队精神求答案 月经期间能吃红豆薏米粥吗 为什么冬眠的青蛙几不会饿死也不会闷死 尚赫活水机是否通过国家认证 求FM2012各个位置上的小牛,妖人。。 美国一养殖场大量蛤蜊被热浪烤熟,这样的生物养在水里怎么能被烤熟? 跪求fm2011妖人名单及神级球员名单 尚赫产品会致癌吗,是否安全,可以用吗 特朗普成为美国第三位弹劾总统,什么叫做弹劾总统? FM2021 自动学位置 天津尚赫公司怎么样呢 美国养殖户对猪做了什么,为什么成本只有中国的一半 特朗普在最高法院打输了哪场官司,这场官司为什么重要? 面筋怎样炒好吃啊? 尚赫加盟靠谱吗? 在中国市场并不便宜的牛肉,为什么美国人能够“顿顿吃”? FM2009各个位置中,最好用的几个球员都有谁?要25岁以下的 fm09 位置英文对照,比如c罗的am,rl等位置缩写的中文含义 总统弹劾是什么意思 FM2021小妖多的球队 特朗普为什么不承认失败的原因? fm2021怎么调整注册名单 特朗普做事跟疯子似的做起事来胡作非为,引起了美国甚至全世界的仇恨,为什么不把把他赶下台