天天看点

DBUtils详解

一、什么是dbutils,它的作用

DBUtils是java编程中的数据库操作实用工具,小巧简单实用。

DBUtils封装了对JDBC的操作,简化了JDBC操作。可以少写代码。

DBUtils也属于一种框架,类似于mybatis等等。

1、对于数据表的读操作,他可以把结果转换成List,Array,Set等java集合,便于程序员操作。

2、对于数据表的写操作,也变得很简单(只需写sql语句)

3、.可以使用数据源,使用JNDI,数据库连接池等技术来优化性能–重用已经构建好的数据库连接对象

二、DBUtils的三个核心对象

1. QueryRunner类型(有下面三个方法)

query() 用于执行select

update() 用于执行insert update delete

batch() 批处理)

2. ResultSetHandler接口

用于定义select操作后,怎样封装结果集.

3. DBUtils类

它就是一个工具类,定义了关闭资源与事务处理的方法

三、环境搭建

dbutils jar包:commons-dbutils-1.4.jar

数据源的jar包:c3p0-0.9.1.2.jar、mysql-connector-java-5.1.28-bin.jar

将三个jar包放入WEB-INF/Lib然后记得add-Build-Path

1. 编写数据源c3p0配置文件

(放在classpath中,或classes目录中,命名必须是c3p0-config.xml)

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
  <default-config>
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/javaStudy</property>
    <property name="user">root</property>
    <property name="password">123456</property>
    <property name="initialPoolSize">10</property>
    <property name="maxIdleTime">30</property>
    <property name="maxPoolSize">100</property>
    <property name="minPoolSize">10</property>
  </default-config>
</c3p0-config>
           
  1. 编写C3P0Util类,用于建立连接、释放连接等操作。
public class C3P0Util {
    private static DataSource dataSource = new ComboPooledDataSource();
    public static DataSource getDataSource() {
        return dataSource;
    }
    public static Connection getConnection() {
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            throw new RuntimeException("超时");
        }
    }
    public static void release(Connection conn, Statement stmt, ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            rs = null;
        }
        if (stmt != null) {
            try {
                stmt.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            stmt = null;
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            conn = null;
        }
    }

}