Apache commons-dbutils工具简介说明

转自:

Apache commons-dbutils工具简介说明

下文笔者讲述Apache commons-dbutils工具简介说明,如下所示

commons-dbutils简介

commons-dbutils
  是Apache提供的一个开源JDBC工具类库
  它是对JDBC的简单封装
  学习成本极低
  并且使用dbutils能极大简化jdbc编码的工作量
   同时也不会影响程序的性能

commons-dbutils API介绍

org.apache.commons.dbutils.QueryRunner
org.apache.commons.dbutils.ResultSetHandler

工具类

org.apache.commons.dbutils.DbUtils

commons-dbutils下载方法

https://commons.apache.org/proper/commons-dbutils/

DbUtils类介绍

DbUtils类的功能:
  提供一些操作方法:
    如关闭连接、装载JDBC驱动程序等常规工作的工具类
注意事项:
   里面的所有方法都是静态的(关闭资源、加载驱动)
  
常见的方法如下所示:
   public static void close(…) throws java.sql.SQLException
      DbUtils类提供了三个重载的关闭方法
     这些方法检查所提供的参数是不是NULL
      当参数为非null时,则关闭Connection、Statement和ResultSet。

   public static void closeQuietly(…)
       此方法不仅能在Connection、Statement和ResultSet为NULL情况下避免关闭
        还能隐藏一些在程序中抛出的SQLException 

   public static void commitAndCloseQuietly(Connection conn);
       用于提交连接
       然后关闭连接
      并且在关闭连接时不抛出SQL异常。

    public static boolean loadDriver(java.lang.String driverClassName)
      装载并注册JDBC驱动程序
      如果成功就返回true
      使用该方法,无需捕捉这个异常ClassNotFoundException。

QueryRunner类

该类简单化SQL查询
   它与ResultSetHandler组合在一起使用可以完成大部分的数据库操作
    能够大大减少编码量
    此类中定义了所有的与数据库操作的方法(查询、更新)

QueryRunner类提供两个构造方法

 默认的构造方法
  需要一个 javax.sql.DataSource 来作参数的构造方法

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。

public Object query(Connection conn,String sql, ResultSetHandler rsh) throws SQLException
    执行一个不需要置换参数的查询操作

public int update(Connection conn, String sql,Object[] params) throws SQLException
    用于执行一个更新(插入、更新或删除)操作 

public int update(Connection conn, String sql) throws SQLException
    用于执行一个不需要置换参数的更新操作。

ResultSetHandler接口

该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式。
 ResultSetHandler接口提供了一个单独的方法:Object
 handle (java.sql.ResultSet  rs)

ResultSetHandler接口的实现类

ArrayHandler:把结果集中的第一行数据转成对象数组
ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中
BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中
BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里
ColumnListHandler(列名):将结果集中某一列的数据存放到List中
KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key
MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值
MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List


JdbcUtils类编写

package Utils;
import java.sql.*;
/**
* 1. 返回连接 2. 关闭
*
* @author java265.com
*
*/

public class JdbcUtils {

// 连接参数
    // private String url = "jdbc:mysql://localhost:3306/jdbc_demo";
    private static Stringurl ="jdbc:mysql://192.168.8.245:3306/testdb";

private static Stringuser ="root";
private static Stringpassword ="123456";

/**
    * 返回连接对象
    */
public static Connection getConnection() {
  try {
   Class.forName("com.mysql.jdbc.Driver");
   return DriverManager.getConnection(url,user,password);
  }catch (Exception e) {
    throw new RuntimeException(e);
  }
}

/**
  * 关闭
  */
 public static void closeAll(Connection con, Statement stmt, ResultSet rs) {
try {
if (rs !=null) {
     rs.close();// 快速异常捕获Alt + shift + z
     rs =null;// 建议垃圾回收期回收资源
   }
if (stmt !=null) {
    stmt.close();
    stmt =null;
}
if (con !=null && !con.isClosed()) {
    con.close();
    con =null;
    }
}catch (SQLException e) {
    throw new RuntimeException(e);
   }
 }
}

 
public class User {
   private int id;
   private String name;
   /*
    此处省略 get/set 及其它字段定义代码
   */
}

/**
 * 测试代码
 */
import Utils.JdbcUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.*;
import org.junit.Test;
import java.sql.Array;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class App_query {
   private Connectionconn;

    @Test
    public void testQuery()throws Exception {
       String sql ="select * from users where id=?";

       //获取连接 
       conn = JdbcUtils.getConnection();

       //创建DbUtils核心工具类对象
        QueryRunner qr =new QueryRunner();
      
	   //查询
       User users = qr.query(conn, sql,new ResultSetHandler() {

       //如何封装一个Admin对象
        public User handle(ResultSet rs)throws SQLException {

		if (rs.next()) {
			User user =new User();
			user.setId(rs.getInt("id"));
			user.setName(rs.getString("name"));
            ***********
			return user;
		}
		return null;
	}

},29);

    // 关闭

      conn.close();

}
 

    @Test
    public void testQueryOne()throws Exception {
      String sql ="select * from user where id=?";
      
	   //获取连接
	   conn = JdbcUtils.getConnection();
	   //创建DbUtils核心工具类对象
	   QueryRunner qr =new QueryRunner();
	   //查询返回单个对象
	   User user =  qr.query(conn, sql,new BeanHandler(User.class),30);

	   System.out.println(user);
	   conn.close();
	  }

    //2.BeanListHandler: 查询返回list集合,集合元素是指定的对象
    @Test
    public void testQueryMany()throws Exception {
		String sql ="select * from user";
          conn = JdbcUtils.getConnection();
        QueryRunner qr =new QueryRunner();
        
		//查询全部数据
         List list = qr.query(conn, sql,new BeanListHandler(Admin.class));
         conn.close();
     }

@Test
// 3) ArrayHandler, 查询返回结果记录的第一行,封装对对象数组, 即返回:Object[]
// 4) ArrayListHandler, 把查询的每一行都封装为对象数组,再添加到list集合中
// 5) ScalarHandler 查询返回结果记录的第一行的第一列  (在聚合函数统计的时候用)
// 6) MapHandler  查询返回结果的第一条记录封装为map

  public void testArray()throws Exception {
       String sql ="select * from user";
       conn = JdbcUtils.getConnection();
     
	   QueryRunner qr =new QueryRunner();
       
	   //查询
      Object[] obj = qr.query(conn, sql,new ArrayHandler());
       
	  System.out.println("数组:"+ Arrays.toString(obj));
      
	  List list = qr.query(conn, sql,new ArrayListHandler());

     for (int i =0; i < list.size(); i++) {
        System.out.println("list:"+ Arrays.toString(list.get(i)));
      } 
	 //查询的结果先是数组
     //然后将数组添加到list中
     //所以由list获取的每一条都为数组,然后遍历数组才能获取值

    Integer num = qr.query(conn, sql,new ScalarHandler());
     System.out.println("第一列:" + num);
     Map map = qr.query(conn,sql,new MapHandler());
     Set<Map.Entry<String, Object>> entrys = map.entrySet();

     //entry代表一个键值对
     for (Map.Entry entry : entrys) {
        System.out.println("map " + entry.getKey() +"=" + entry.getValue());
     }
     conn.close();
   }
}
 使用dbutils工具类可以简化
     jdbc编码的工作量
    不再用JDBC编写原子性代码
    直接使用QueryRunner获取结果
    而且其安全性较高
    内部的JDBC一些工作已经做好了实现
    用户只需直接使用即可
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Commons-dbutils-1.3.jar 可以在 Apache 的官方网站上下载。您可以访问以下链接: http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgi 请确保您下载的版本为 1.3,并且根据自己的需要选择合适的文件。 下载后,您可以将其添加到您的项目中并使用它。 ### 回答2: 想要下载commons-dbutils-1.3.jar,首先我们需要知道它是什么。commons-dbutilsApache组织提供的一个开源项目,它提供了一个简单易用的工具包,用于简化Java应用程序与数据库之间的交互。该工具包使用了JDBC(Java Database Connectivity)来提供数据库的连接和操作。 要下载commons-dbutils-1.3.jar,我们可以通过以下步骤进行: 1. 打开网络浏览器,进入Apache的官方网站(https://commons.apache.org)。 2. 在官方网站的搜索框中输入commons-dbutils,并点击搜索按钮。 3. 在搜索结果中找到相应的项目(一般是以“Apache Commons DbUtils”为标题),点击进入该项目的页面。 4. 在项目页面中,找到“Downloads”或“Download”选项,点击进入下载页面。 5. 在下载页面中,查找与你正在使用的JVM(Java Virtual Machine)版本和操作系统版本相对应的commons-dbutils-1.3.jar下载链接。 6. 点击下载链接,开始下载commons-dbutils-1.3.jar文件。 7. 下载完成后,将该文件保存到合适的路径下。在开发项目中添加该Jar文件的路径,以便在代码中使用commons-dbutils。 总结:要下载commons-dbutils-1.3.jar,我们需要访问Apache的官方网站,找到相应的下载链接并进行下载。下载完成后,将该文件添加到项目中即可使用commons-dbutils工具包。 ### 回答3: commons-dbutils-1.3.jar是Apache Commons项目中的一个Java库,用于简化数据库操作。如果要下载这个jar文件,可以按照以下步骤进行操作。 1. 打开Apache官方网站,进入Commons项目的页面。 2. 在页面上找到“Downloads”(下载)选项,点击进入下载页面。 3. 在下载页面上,找到“DbUtils”选项,点击进入DbUtils的下载页面。 4. 在DbUtils的下载页面上,找到最新版本的jar文件,通常会以“commons-dbutils-1.3.jar”或类似的形式命名。 5. 选择合适的jar文件下载链接,点击下载开始下载。 6. 下载完成后,将下载的jar文件保存到本地计算机上合适的位置。 下载完成后,就可以将commons-dbutils-1.3.jar添加到项目的classpath中,以便在Java代码中使用它提供的数据库操作功能。可以通过在代码中导入相关的类或使用Maven等构建工具将其引入项目中。这样,就可以使用commons-dbutils库中的API来简化数据库连接、查询、更新等常见操作,提高开发效率和代码可读性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值