Java数据库连接池和DbUtils的使用
创始人
2025-05-28 19:58:47
0

连接池

使用JDBC操作数据库,需要建立Connection,使用传统的JDBC操作需要每次创建Connection,创建Connection是一个非常性能和消耗时间的过程,我们需要提高程序性能,那么就需要减少每次创建连接带来的负面影响,解决这个问题我们将利用池子概念,预先创建一些链接放入池子中,如果需要操作数据,不用创建新的Connection,只需要在池子中获取即可,使用完毕放入池子,这样就形成了复用。通过连接池获得的连接,调用连接的close()方法时不会真正关闭连接,而是放入连接池。

连接池常用概念:

  • 最小连接数minIdle:是数据库一直保持的数据库连接数,所以如果应用程序对数据库连接的使用量不大,将有大量的数据库资源被浪费。

  • 初始化连接数initialSize:连接池启动时创建的初始化数据库连接数量。

  • 最大连接数maxActive:是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求被加入到等待队列中。

  • 最大等待时间maxWaitTime:当没有可用连接时,连接池等待连接被归还的最大时间,超过时间则抛出异常,可设置参数为0或者负数使得无限等待(根据不同连接池配置)。

  • 最大空闲连接数maxIdle:超过的空闲连接将被释放

DBCP连接池

在这里插入图片描述

BasicDataSource source = new BasicDataSource();
source.setDriverClassName("com.mysql.jdbc.Driver");
source.setUrl("jdbc:mysql://localhost:3306/1808");
source.setUsername("root");
source.setPassword("");
source.setInitialSize(10);
Connection connection=source.getConnection();

-## c3p0连接池

在这里插入图片描述

c3p0需要设置一个配置文件,c3p0-config.xml,位置是在src下


com.mysql.jdbc.Driverjdbc:mysql://localhost:3306/1808root3000030103010010200 com.mysql.jdbc.Driverjdbc:mysql://localhost:3306/1715broot201040205

ComboPooledDataSource dataSource = new ComboPooledDataSource();
Connection connection = dataSource.getConnection();

Druid连接池

在这里插入图片描述

DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/1808?characterEncoding=utf-8");//设置连接的数据库
dataSource.setUsername("root");//设置用户名
dataSource.setPassword("");//设置密码
Connection connection = dataSource.getConnection();

DbUtils

—是apache下的一个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果集封装成JavaBean
在这里插入图片描述

QueryRunner用于执行sql语句。query方法进行查询,update方法进行增删改操作。
QueryRunner runner = new QueryRunner(dataSource);
runner.update("insert into user(name,password) values(?,?)", "aaa","1111");

执行查询时,最核心的特性是结果集的封装,封装的时候要求结果集中的列名对应实体类中的属性名 直接封装成实体类用BeanHandler

QueryRunner runner = new QueryRunner(dataSource);
String sql = "select id,title from News where id = ?";
int id = 9;
News query = runner.query(sql, new BeanHandler(News.class), id);
System.out.println(query.getTitle());

封装成实体类列表用BeanListHandler

QueryRunner runner = new QueryRunner(dataSource);
String sql = "select id,title from News";
List query = runner.query(sql, new BeanListHandler(News.class));

返回一个值用ScalarHandler

QueryRunner runner = new QueryRunner(dataSource);
String sql = "select count(id) from News";
long query = (long) runner.query(sql, new ScalarHandler());
System.out.println(query);

QueryRunner 进行查询的操作
org.apache.commons.dbutils.handlers
ArrayHandler:将ResultSet中第一行的数据转化成对象数组
ArrayListHandler将ResultSet中所有的数据转化成List,List中存放的是Object[]
BeanHandler :将ResultSet中第一行的数据转化成类对象
BeanListHandler:将ResultSet中所有的数据转化成List,List中存放的是类对象
ColumnListHandler :将ResultSet中某一列的数据存成List,List中存放的是Object对象
KeyedHandler:将ResultSet中存成映射,key为某一列对应为Map。Map中存放的是数据
MapHandler:将ResultSet中第一行的数据存成Map映射
MapListHandler:将ResultSet中所有的数据存成List。List中存放的是Map
ScalarHandler:将ResultSet中一条记录的其中某一列的数据存成Object

相关内容

热门资讯

如何写好述职报告 如何写好述职报告  导语:如果把问题找的准确,能够很好地吸取经验教训,在述职当中会得到领导与群众的高...
高中学生自我陈述报告 高中学生自我陈述报告范文600字(通用5篇)  随着个人的文明素养不断提升,报告有着举足轻重的地位,...
大学生顶岗实习月报 大学生顶岗实习月报范文  一段时间的实习生活又接近尾声,这段时间里,一定有很多值得分享的经验吧,这时...
暑假调查报告 精选暑假调查报告4篇  在不断进步的时代,我们都不可避免地要接触到报告,不同种类的报告具有不同的用途...
毕业生自我陈述报告 毕业生自我陈述报告800字(精选20篇)  在当下社会,大家逐渐认识到报告的重要性,报告成为了一种新...
寒假社会实践报告 寒假社会实践报告精选15篇  随着个人的素质不断提高,需要使用报告的情况越来越多,其在写作上具有一定...
关于姓氏研究报告 关于姓氏的研究报告一问题的提出:我们班有好几个同学姓陈。他们常开玩笑说:“我们一千年前是一家噢!”这...
军事基地采风报告范文推荐26... 军事基地采风报告范文 第一篇踏上贵州的土地,感受苗寨风土人情。贵州是一个多民族省份,地处云贵高原以北...
领导干部述职报告 领导干部述职报告(通用11篇)  人生天地之间,若白驹过隙,忽然而已,回顾这段时间的工作,取得的收获...
历史系提氏起源与分布社会实践... 历史系提氏起源与分布社会实践报告范文  随着社会不断地进步,报告的使用成为日常生活的常态,我们在写报...
关于大学生消费情况调查报告 关于大学生消费情况调查报告  什么是调查报告?  调查报告是一种说明性的文体,兼有通讯和评论的某些特...
盐城师范学院校徽 盐城师范学院校徽  盐城师范学院,是江苏省属高等师范本科院校,坐落在江苏沿海开放城市盐城市。  学校...
资金申请报告 资金申请报告(通用18篇)  在经济飞速发展的今天,报告不再是罕见的东西,报告根据用途的不同也有着不...
文印店实习报告 文印店实习报告5篇  随着社会不断地进步,报告的使用成为日常生活的常态,不同种类的报告具有不同的用途...
关于街头广告牌错别字的调查报...   一、调查背景  汉字是世界上最古老的文字之一,也是世界上使用人数最多的文字。汉字的数量很多,总数...
财务预算实习报告 财务预算实习报告  实习时学生接触实践的教学过程,每个学生都应该通过财务管理的模拟设计实习,了解财务...
采风报告 采风报告推荐度:安全报告推荐度:消防报告推荐度:述职报告推荐度:调研报告推荐度:相关推荐
医保自查自纠整改报告 医保自查自纠整改报告范文  随着人们自身素质提升,报告使用的频率越来越高,报告具有双向沟通性的特点。...
医生述职报告 【实用】医生述职报告模板汇总六篇  在现实生活中,越来越多的事务都会使用到报告,不同种类的报告具有不...
个人征信报告 个人征信报告  报告的基本要求  1、总结必须有情况的概述和叙述,有的比较简单,有的比较详细。这部分...