JavaWeb——数据库连接池与DBUtils工具
- 格式:pdf
- 大小:241.52 KB
- 文档页数:6
第讲:开源具的使用第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扫一扫,关注威哥微信公众平台。
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框架学习⼀、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。
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⼯具包详解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是一个在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`方法执行更新语句,并传入相应的参数。
数据库操作之DBUtils概述DBUtils是Java编程中的数据库操作实⽤⼯具,⼩巧简单实⽤。
DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
DBUtils三个核⼼功能介绍QueryRunner中提供对sql语句操作的APIResultSetHandler接⼝,⽤于定义select操作后,怎样封装结果集DBUtils类,它就是⼀个⼯具类,定义了关闭资源与事务处理的⽅法QueryRunner核⼼类QueryRunner(DataSourcr ds),提供数据源(连接池),DbUtils底层⾃动维护连接connectionupdate(String sql,Obj...params),执⾏更新数据query(String sql,ResultSetHandler<T>rsh,Object...panrams),执⾏查询ResultSetHandler结果集处理类ArrayHandler:适合取1条记录,把结果集中的第⼀⾏数据转成对象数组。
ArrayListHandler:适合取多条记录,把结果集中的每⼀⾏数据都转成⼀个对象数组,再存放到List中。
BeanHandler:将结果集中的第⼀⾏数据封装到⼀个对应的JavaBean实例中(把每条记录封装成对象,适合取⼀条记录)BeanListHandler:将结果集中的每⼀⾏数据都封装到⼀个对应的JavaBean实例中,存放到List⾥。
//重点MapHandler:将结果集中的第⼀⾏数据封装到⼀个Map⾥,key是列名,value就是对应的值。
//重点MapListHandler:将结果集中的每⼀⾏数据都封装到⼀个Map⾥,然后再存放到ListColumnListHandler:将结果集中某⼀列的数据存放到List中。
KeyedHandler(name):将结果集中的每⼀⾏数据都封装到⼀个Map⾥(List<Map>),再把这些map再存到⼀个map⾥,其key为指定的列。
Dbutils数据库工具包的使用Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。
1).对于数据表的读操作,他可以把结果转换成List,Array,Set等java集合,便于程序员操作;2).对于数据表的写操作,也变得很简单(只需写sql语句)3).可以使用数据源(比如c3p0)。
(1)需要的jar包第一步,需要把1个jar文件配置到系统路径中。
commons-dbutils-1.6-bin.zip其中,需要配置到项目的构建路径的jar包为:commons-dbutils-1.6.jar(2)事前准备1)数据库有一个表,比如:2)建立javabean,字段与表字段保持一致比如:Customer.java(3)新建QueryRunner对象QueryRunner类:负责执行SQL语句语句:private QueryRunnerqueryrunner = new QueryRunner();// dbutils包(4)获取某一个对象Customer c = (Customer) queryrunner.query(connection, sql, new BeanHandler(Custo mer.class),args);期中,connection为数据库链接对象, sql,为带?的sql语句,args为sql参数对应的值。
(5)获取一个ListList<Customer>list = (Customer) queryrunner.query(connection, sql, new BeanListHandl er(Customer.class),args);期中,connection为数据库链接对象, sql,为带?的sql语句,args为sql参数对应的值。
(6)获取某一个字段的值Stringname = (String) queryrunner.query(connection, sql, new ScalarHandler(),args);期中,connection为数据库链接对象, sql,为带?的sql语句,args为sql参数对应的值。