JavaWeb——数据库连接池与DBUtils工具

合集下载

兄弟连_马剑威_JavaWeb_028_开源工具DbUtils的使用

兄弟连_马剑威_JavaWeb_028_开源工具DbUtils的使用

第讲:开源具的使用第28讲:开源工具DbUtils的使用课程大纲•1、DbUtils简介•2、更新操作•3、查询操作1、DBUtils简介•DBUtils是apache下的一个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果集封装成JavaBean,这就为我们做了最枯燥乏味、最容易出错的一大部分工作。

•下载地址:•/proper/commons-dbutils/download_dbutils.cgi2、更新操作•QueryRunner类•runner.update("delete from user where userName=?","用户名");••int rowEffects = runner.update("insert into user(userName,password,comment) values(?,?,?)", "用户名","密码","备注");3、查询操作•//返回bean•User user = runner.query("select * from user where userId=?", 1,new BeanHandler<User>(User.class));•//返回beanlist•System.out.println("返回BeanList结果......");•List<User> beanListResult =•runner.query("select * from user",())•new BeanListHandler(User.class));3、查询操作•//返回一个值•Object increaseId=runner.query("select last_insert_id()", new ScalarHandler());THANKYOU!微信号:weige-java扫一扫,关注威哥微信公众平台。

javaweb之连接数据库

javaweb之连接数据库
//3.如何操作数据库里的数据 //定义sql语句
//执行sql语句
//获取sql语句执行器
//处理结果
} catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace();
} return conn; } public static void main(String[] args) {
} } public static void close(ResultSet resultSet ) {
try { if (resultSet != null) { resultSet.close(); }
} catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace();
DBUtil.getConnection(); } public static void close(Connection connection ) {
try { if (connection != null) { connection.close(); }
} catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace();
15
try {
16
Connection conn=DBUtil.getConnection();
17
PreparedStatement pstmt=conn.prepareStatement(sql);
18
pstmt.setString(1,n.getClassname());

dbutil 参数

dbutil 参数

dbutil 参数
DBUtil是一个常见的数据库连接工具类,用于简化数据库操作。

它通常包含一些参数,用于配置数据库连接和操作。

1. 数据库驱动参数,DBUtil需要指定数据库驱动程序,以便
正确加载和使用数据库。

这个参数通常是一个字符串,指定数据库
驱动的类名或JDBC URL。

2. 数据库连接参数,DBUtil需要提供数据库连接的相关参数,以便建立与数据库的连接。

这些参数可以包括数据库的URL、用户名、密码等。

3. 连接池参数,如果使用连接池来管理数据库连接,DBUtil
可能还会包含一些连接池相关的参数。

这些参数可以包括最大连接数、最小空闲连接数、连接超时时间等。

4. SQL语句参数,DBUtil通常需要提供执行的SQL语句和相应
的参数。

这些参数可以是查询条件、更新数据等操作所需的参数。

5. 数据库操作参数,DBUtil可能还会包含其他一些数据库操
作相关的参数,例如事务管理、批量操作等。

需要注意的是,具体的参数列表和使用方式可能因不同的DBUtil实现而有所差异。

在使用DBUtil时,可以参考相应的文档或示例代码,以了解具体的参数要求和使用方式。

总结起来,DBUtil的参数包括数据库驱动参数、数据库连接参数、连接池参数、SQL语句参数以及其他数据库操作参数,这些参数共同配置和指导DBUtil的数据库连接和操作行为。

javaweb学习总结(四十一)——Apache的DBUtils框架学习

javaweb学习总结(四十一)——Apache的DBUtils框架学习

javaweb学习总结(四⼗⼀)——Apache的DBUtils框架学习⼀、commons-dbutils简介  commons-dbutils 是 Apache 组织提供的⼀个开源 JDBC⼯具类库,它是对JDBC的简单封装,学习成本极低,并且使⽤dbutils能极⼤简化jdbc编码的⼯作量,同时也不会影响程序的性能。

因此dbutils成为很多不喜欢hibernate的公司的⾸选。

commons-dbutilsAPI介绍:mons.dbutils.QueryRunnermons.dbutils.ResultSetHandler ⼯具类mons.dbutils.DbUtils⼆、QueryRunner类使⽤讲解 该类简单化了SQL查询,它与ResultSetHandler组合在⼀起使⽤可以完成⼤部分的数据库操作,能够⼤⼤减少编码量。

QueryRunner类提供了两个构造⽅法:默认的构造⽅法需要⼀个 javax.sql.DataSource 来作参数的构造⽅法。

2.1、QueryRunner类的主要⽅法 public Object query(Connection conn, String sql, Object[] params, ResultSetHandler rsh) throws SQLException:执⾏⼀个查询操作,在这个查询中,对象数组中的每个元素值被⽤来作为查询语句的置换参数。

该⽅法会⾃⾏处理 PreparedStatement 和 ResultSet 的创建和关闭。

public Object query(String sql, Object[] params, ResultSetHandler rsh) throws SQLException: ⼏乎与第⼀种⽅法⼀样;唯⼀的不同在于它不将数据库连接提供给⽅法,并且它是从提供给构造⽅法的数据源(DataSource) 或使⽤的setDataSource ⽅法中重新获得Connection。

DButils

DButils

DButilsDBUtils什么是DBUtilsDBUtils是⼀个实⽤⼩巧的⼯具,封装了JDBC.简化了JDBC的操作.对于数据库的读操作,只需要知道sql语句即可.DBUtils会将查询的结果集以指定的⽅式封装起来,⽐如List, javaBean等.同时⽀持数据源技术.使⽤时需要引⼊DButils的jar包:密码:f6l6DBUtils的APIQueryRunner对象1.对象描述该对象⽤来提供执⾏增删改查的⽅法.2.⽅法query() 查询⽅法update() 增删改⽅法ResultSetHandler对象(接⼝)1.对象描述⽤来对查询的结果集进⾏封装2.该接⼝常⽤实现类ArrayHandler适合结果集是⼀⾏数据,该实现类会将这⾏数据封装成⼀个数组对象,元素即为查询出来的字段值.ArrayListHandler适合结果集是多⾏数据,会将这些数据封装成⼀个List集合,该集合的元素是数组,数组即为每⾏数据ColumnListHandler适合结果集是多⾏单列,会将这些数据封装到⼀个List集合KeyedHandler适合取多条数据,会将每条数据封装成⼀个map集合,最后再把这些map集合封装成⼤map中MapHandler适合结果集是⼀条数据,封装到map集合中MapListHandler适合取多条数据,会将每条数据封装成⼀个map集合,最后再把这些map集合封装成List中ScalarHandler适合取单⾏单列数据,⽐如聚合函数BeanHandler适合取单⾏数据,将数据封装成对象BeanListHandler适合取多⾏数据,将每⾏数据封装成⼀个对象,再把这些对象封装成⼀个List集合举个栗⼦BeanListHandlerpublic class Demo {public static void main(String[] args) throws SQLException {//执⾏查询//创建QueryRunner对象QueryRunner queryRunner = new QueryRunner();Connection connection = JDBCUtil.getConnection(); //此⽅法是⾃定义实现的参考连接池那篇随笔//查询多⾏,并封装成对象,再放进List集合中List<Employee> list = queryRunner.query(connection, "select * from emp", new BeanListHandler<Employee>(Employee.class));for(Enployee e:list){System.out.println(e);}}}栗⼦BeanHandler://执⾏查询//创建QueryRunner对象QueryRunner queryRunner = new QueryRunner();Connection connection = JDBCUtil.getConnection();//查询⼀⾏,封装成对象Employee emp = queryRunner.query(connection, "select * from emp where e_id = ?", new BeanHandler<Employee>(Employee.class), 1); //此处的1是where语句等号后⾯的?,做参数栗⼦KeyedHandler://执⾏查询//创建QueryRunner对象QueryRunner queryRunner = new QueryRunner();Connection connection = JDBCUtil.getConnection();Map<Object, Map<String, Object>> map = queryRunner.query(connection, "select * from emp", new KeyedHandler(2));//遍历map集合Set<Map.Entry<Object, Map<String, Object>>> set = map.entrySet();for(Map.Entry<Object, Map<String, Object>> entry : set){Object bigKey = entry.getKey();Map<String, Object> smallMap = entry.getValue();System.out.println(bigKey); //关⽻Set<String> smallSet = smallMap.keySet();for(String smallKey : smallSet) {Object value = smallMap.get(smallKey);System.out.println(smallKey + ":" + value);}}栗⼦ScalarHandler://执⾏查询//创建QueryRunner对象QueryRunner queryRunner = new QueryRunner();Connection connection = JDBCUtil.getConnection();//聚合函数long num = (long) queryRunner.query(connection, "select count(*) from emp", new ScalarHandler());System.out.println(num);栗⼦://执⾏查询//创建QueryRunner对象QueryRunner queryRunner = new QueryRunner();Connection connection = JDBCUtil.getConnection();//增Employee employee = new Employee();employee.setE_id(18);employee.setE_name("吕布");employee.setE_salary(10000.0);employee.setE_did(1);employee.setHiretime(new Date());employee.setE_job("staff");Object[] param = {employee.getE_id(), employee.getE_name(), employee.getE_salary(), employee.getE_job(), employee.getE_did(), employee.getHiretime()}; int row = queryRunner.update(connection, "delete from emp where e_name = ?", employee.getE_name());System.out.println(row);JDBCUtil.close(connection);。

java学习笔记之DBUtils工具包详解

java学习笔记之DBUtils工具包详解

java学习笔记之DBUtils⼯具包详解DBUtils⼯具包⼀.介绍DBUtils是Apache组织开源的数据库⼯具类。

⼆.使⽤步骤①.创建QueryRunner对象②.调⽤update()⽅法或者query()⽅法执⾏sql语句三.构造⽅法及静态⽅法QueryRunner类1.构造⽅法①.⽆参构造QueryRunner qr =new QueryRunner();使⽤⽆参构造的时候,调⽤update⽅法和query⽅法时就需要使⽤带Connection 类型参数的重载形式②.有参构造QueryRunner qr= new QueryRunner(DataSource dataSource);这个参数是连接池对象2.静态⽅法①.int update(Connection con ,String sql ,Param);该⽅法⽤于增删改语句的操作参数介绍:参数⼀:连接池对象(这个在⽆参构造的时候使⽤)参数⼆:sql语句参数三:可变参数(就是sql占位符的值)返回值:int类型的返回受影响的⾏数简单update demopublic class Demo {public static void main(String[] args) throws Exception {/** 演⽰有参构造的update()⽅法** ⾸先得导⼊jar包* 配置好C3P0的配置⽂件与准备好C3P0⼯具类* 然后创建QueryRunner对象* 调⽤update⽅法* 最后处理结果*/QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());int re = qr.update("update user set name=? where uid=?","张三",2);if(re>0){System.out.println("修改成功");}else {System.out.println("修改失败");}}}附上简单的C3P0⼯具类public class C3P0Utils {private static DataSource dataSource=new ComboPooledDataSource();/*** 获得DataSource实现类对象* @return*/public static DataSource getDataSource(){return dataSource;}/*** 获得连接* @return* @throws Exception*/public static Connection getConnection()throws Exception{return dataSource.getConnection();}}②.query(Connection con , String sql ,Param ...)该⽅法⽤于出查询操作参数介绍:参数⼀:Connection 数据库连接对象,使⽤带参构造时可以不⽤参数⼆:sql语句参数三:表⽰对结果集的处理⽅式(ResultSetHandler接⼝)ArrayHandler: 表⽰将结果集第⼀⾏的数据存⼊数组ArrayListHandler 将结果集每⼀⾏的数据存⼊数组,多个数组存⼊集合 List<Object[]> BeanHandler 表⽰将结果集第⼀⾏的数据存⼊Java Bean对象BeanListHandler 表⽰将结果集每⼀⾏的数据存⼊Java Bean对象,多个对象存⼊集合ColumnListHandler 表⽰将某⼀列的数据存⼊集合MapHandler 表⽰将结果集第⼀⾏的数据存⼊Map集合 :键:列名值:列的值MapListHandler 表⽰将结果集每⼀⾏的数据存⼊Map集合多个Map存⼊List集合 List<Map<,>> ScalarHandler 获取⼀个值: count(*) sum(price)参数四:可变参数(就是sql占位符的值)使⽤BeanListHandler处理⽅式的demo:public void demo1() throws Exception{QueryRunner qr = new QueryRunner(MyC3P0Utils.getDataSource());List<Car> list = qr.query("select * from car where price<20 order by price desc", new BeanListHandler<>(Car.class)); for (Car car : list) {System.out.println(car);}}javaBean类的编写:public class Car {private int cid;private String cname;private String company;private String grade;private double price;@Overridepublic String toString() {return "Car [cid=" + cid + ", cname=" + cname + ", company=" + company + ", grade=" + grade + ", price=" + price+ "]";}public int getCid() {return cid;}public void setCid(int cid) {this.cid = cid;}public String getCname() {return cname;}public void setCname(String cname) {ame = cname;}public String getCompany() {return company;}public void setCompany(String company) {pany = company;}public String getGrade() {return grade;}public void setGrade(String grade) {this.grade = grade;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public Car(int cid, String cname, String company, String grade, double price) {super();this.cid = cid;ame = cname;pany = company;this.grade = grade;this.price = price;}public Car() {super();// TODO Auto-generated constructor stub}}以上这篇java学习笔记之DBUtils⼯具包详解就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

dbutils的使用

dbutils的使用

dbutils的使用dbutils是一个在Java中使用数据库的工具类库,它提供了简单而强大的API,使得数据库操作变得更加容易。

在这篇文章中,我将向您介绍如何使用dbutils进行常见的数据库操作,包括查询、插入、更新和删除数据。

1. 查询数据使用dbutils查询数据非常简单。

首先,您需要创建一个QueryRunner对象,并传入一个数据源。

然后,您可以使用`query`方法执行查询语句,并将结果集转换为您需要的对象或列表。

例如,下面的代码将执行一个简单的查询,并将结果集转换为一个列表:```javaQueryRunner queryRunner = new QueryRunner(dataSource);String sql = "SELECT * FROM users";List<User> users = queryRunner.query(sql, new BeanListHandler<>(User.class));```2. 插入数据要向数据库中插入数据,您可以使用`update`方法。

首先,您需要创建一个UpdateRunner对象,并传入一个数据源。

然后,您可以使用`update`方法执行插入语句,并传入相应的参数。

例如,下面的代码将向数据库中插入一条新的用户记录:```javaUpdateRunner updateRunner = new UpdateRunner(dataSource); String sql = "INSERT INTO users (name, age) VALUES (?, ?)"; updateRunner.update(sql, "John Doe", 25);```3. 更新数据使用dbutils更新数据也非常简单。

您可以使用`update`方法执行更新语句,并传入相应的参数。

Jakarta项目的commons包

Jakarta项目的commons包
?HttpClient——使用HTTP协议的客户端开发框架
?IO——帮助进行IO功能开发
?Jelly——Jelly能够把XML转换成可执行代码,所以Jelly是一个基于XML与Java的脚本和处理引擎。 Jelly借鉴了JSP定指标签,Velocity, Cocoon和Xdoclet中的脚本引擎的许多优点。Jelly可以用在命令行,Ant或者Servlet之中。
以下是StringUtils的各项用法
1.空字符串检查
使用函数: StringUtils.isBlank(testString)
函数介绍: 当testString为空,长度为零或者仅由空白字符(whitespace)组成时,返回True;否则返回False
例程:
String test = "";
String test2 = "\n\n\t";
String test3 = null;
String test4 = "Test";
System.out.println( "test blank? " + StringUtils.isBlank( test ) );
?CLI——处理命令行的命令的解析。
?Codec——包含一些通用的编码解码算法。包括一些语音编码器, Hex, Base64, 以及URL encoder。
?Collections——扩展和增加标准的 Java Collection框架。
?Configuration——操作各种格式的配置文件。Properties文件 /XML文件 /JNDI /JDBC 数据源 /System properties /Applet parameters / Servlet parameters
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

for (int i = 0; i < 10000; i++) { Connection conn = DBCPUtils.getConnection(); DBCPUtils.closeConn(conn); } long end = System.currentTimeMillis(); System.out.println("用时:" + (end - begin)); } }
Байду номын сангаас
#<!-- 最小空闲连接 --> minIdle=5 #最大建立连接等待时间。如果超过此时间将接到异常。设为-1 表示无限制 maxWait=1000
2.创建 DBCP 工具类文件 创建一个名称为 DBCPUtils 的工具类,其代码如下所示。
import java.sql.*; import java.util.Properties; import org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory; public class DBCPUtils { private static DataSource ds;//定义一个连接池对象 static{ try { Properties pro = new Properties(); pro.load(DBCPUtils.class.getClassLoader() .getResourceAsStream("dbcpconfig.properties")); //得到一个连接池对象 ds = BasicDataSourceFactory.createDataSource(pro); } catch (Exception e) { throw new ExceptionInInitializerError("初始化连接错误,请检查配置文件!"); } } //从池中获取一个连接 public static Connection getConnection() throws SQLException{ return ds.getConnection(); } public static void closeConn(Connection conn){ if(conn!=null){ try { conn.close();//关闭 } catch (SQLException e) { e.printStackTrace(); } } } }
执行程序后,控制台的输出结果如下图所示。
三、案例总结
在上述案例中,是通过读取配置文件创建的数据源对象。其中, BasicDataSourceFactory 是创建 BasicDataSource 对象的工厂类,它包含一个返回值为 BasicDataSource 对象的方法 createDataSource(),该 方法通过读取配置文件的信息生成数据源对象并返回给调用者。这种把数据库的连接信息和数据源的初始 化信息提取出来写进配置文件的方式,让代码看起来更加简洁,思路也更加清晰。 在测试类中,使用 for 循环创建和关闭了 10000 个连接,并通过开始时间和结束时间的差值来演示了 所用时长,从运行结果中可以看到,其所有时间是非常短的。
第 10 章 补充案例
案例 10-1
DBCP 的使用
一、案例描述
1、 考核知识点 名称:DBCP 数据源 编号:028010002 2、 练习目标 Ø 掌握 DBCP 的使用 3、 需求分析 假设网站一天有很大的访问量,数据库服务器就需要为每次连接创建一次数据库连接,极大的浪 费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。为了避免频繁的创建数据库连接,数 据库连接池技术应运而生。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使 用现有的数据库连接,而不是重新建立。一些开源组织提供了数据源的独立实现,其中,较为常用的 一种数据库连接池就是 DBCP。 4、 设计思路(实现原理) 单 独 使 用 DBCP 数 据 源 时 , 需 要 在 应 用 程 序 中 导 入 两 个 JAR 包 commons-dbcp.jar 和 commons-pool.jar,在要连接数据库还需要导入数据库的驱动包 mysql-connector-java-5.0.8-bin.jar。 1) 创建一个用于设置数据库连接信息的 Properties 文件, 文件中包含连接信息和连接池数量等。 2) 编写用于获取连接池的工具类,工具类中包含获取连接池和关闭连接池的方法。 3) 创建一个测试类,测试能否获取到连接信息。
导入数据库的驱动包 mysql-connector-java-5.0.8-bin.jar。 1) 创建一个用于设置数据库连接信息和数据源的初始化信息的文件。 2) 创建一个测试类,在测试类中通过静态代码快初始化数据源信息,然后在 main 方法中使用 PreparedStatement 对象执行 SQL 查询语句,并通过循环语句输出查询出的数据信息。
2.创建测试类 创建一个名称为 C3p0Test 的类,其代码如下所示。
import java.sql.*; import boPooledDataSource; public class C3p0Test { public static DataSource ds = null; // 初始化 C3P0 数据源 static { // 使用 c3p0-config.xml 配置文件中的 named-config 节点中 name 属性的值 ComboPooledDataSource cpds = new ComboPooledDataSource("itcast"); ds = cpds; } public static void main(String[] args) { Connection conn = null; PreparedStatement prestmt = null; ResultSet rs = null; try { conn = ds.getConnection(); String sql = "select * from user"; prestmt = conn.prepareStatement(sql); rs = prestmt.executeQuery(); while (rs.next()) {
案例 10-2
使用 C3P0 数据源查询数据
一、案例描述
1、 考核知识点 名称:C3P0 数据源 编号:028010003 2、 练习目标 Ø 掌握 C3P0 的使用 Ø 掌握 PreparedStatement 对象的使用 3、 需求分析 C3P0 是目前最流行的开源数据库连接池之一,它实现了 DataSource 数据源接口,支持 JDBC2 和 JDBC3 的标准规范,易于扩展并且性能优越,著名的开源框架 Hibernate 和 Spring 都支持该数据源。 因此,掌握该数据源的使用也是十分必要的。本案例通过使用读取配置文件的方式创建数据源对象, 来演示如何使用 C3P0 数据源查询数据表中的数据。 4、 设计思路(实现原理) 单独使用 C3P0 数据源时,需要在应用程序中导入 JAR 包 c3p0-0.9.1.2.jar,在要连接数据库还需要
3.创建测试类,测试运行结果 创建一个测试类 DBCPTest,在其 main 方法中测试获取数据连接。其测试类的代码如下:
import java.sql.SQLException; public class DBCPTest { public static void main(String[] args) throws SQLException { //输出连接信息 System.out.println(DBCPUtils.getConnection()); long begin = System.currentTimeMillis();
二、案例实现
1.创建配置文件 dbcpconfig.properties 在项目的 src 目录下创建一个名称为 dbcpconfig.properties 的配置文件,编辑后的内容如下所示。
#连接设置 driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/jdbc username=root password=itcast #<!-- 初始化连接 --> initialSize=10 #最大连接数量 maxActive=50 #<!-- 最大空闲连接 --> maxIdle=20
System.out.print(rs.getInt("id") + "
\t"); \t"); \t");
System.out.print(rs.getString("name") + " System.out.println(); } } catch (SQLException e) { e.printStackTrace(); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; } if (prestmt != null) { try { prestmt.close(); } catch (SQLException e) { e.printStackTrace(); } prestmt = null; } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } } }
System.out.print(rs.getString("password") + "
相关文档
最新文档