【2016-03-06】JDBC & DbUtils

一、JDBC

java原生的jdbc是很简单的,就是以下这么点东西。

package org.rathan.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.rathan.entity.Atom;
public class JDBCDemo {
    // 1.Connection;
    // 2.DriverManager;
    // 3.Statement;
    // 4。PreparedStatement;
    // 5.ResultSet;
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e1) {
        }
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        PreparedStatement preStmt = null;
        try {
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "username", "123456");
             stmt = conn.createStatement();
            // rs = stmt.executeQuery("select * from atom_dim");
            preStmt = conn.prepareStatement("select * from atom_dim where atom_id = ?");
            preStmt.setInt(1, 100001);
            rs = preStmt.executeQuery();
            while (rs.next()) {
                System.out.println(rs.getString(2));
            }
            rs.close();
            preStmt.close();
            conn.close();
        } catch (SQLException e) {
        } finally {
            if (preStmt != null) {
                try {
                    preStmt.close();
                } catch (SQLException e) {
                }
            }
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
            }
        }
    }
}


二、DbUtils:

DbUtils是apache下的一个开源项目,其目的是为了简化JDBC的使用。

三个优点:

1. 不用担心资源泄露(resource leak);

2. 代码更简洁;

3. 自动填充JavaBean。

其中最主要的3个class是DbUtils、QueryRunner、ResultSetHandler。对于执行时间很长的query还可以调用AsyncQueryRunner。

DbUtils可以安静地关掉conn:           

DbUtils.closeQuietly(conn);

等价于

if (conn != null) {
    try {
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

QueryRuner有2个常用构造器,一个为默认构造器,另一个需要接口javax.sql.DataSource作为参数。

DataSource是DriverManager的首选替代项,这货貌似可以被Spring托管。

Context initcontext = new InitialContext();
Context context = (Context) initcontext.lookup("java:comp/env");
DataSource ds = (DataSource) context.lookup("jdbc/XE");

以上的class都是出自javax.naming包下的。


QueryRunner常用的query方法一般需要2个参数:

1、java.sql.Connection:作为数据库连接信息;

2、接口ResultSetHandler:将ResultSet处理成指定的指定的类型,常用的如下:  

    1. ListHandler;

    2. MapHandler,MapListHandler;

    3. BeanHandler,BeanListHandler;

例子如下:

List<Map<String, Object>> atoms = queryRunner.query(conn, "select * from atom_dim", new MapListHandler());
List<Atom> atoms = queryRunner.query(conn, "select * from atom_dim", new BeanListHandler<Atom>(Atom.class));


你可能感兴趣的:(【2016-03-06】JDBC & DbUtils)