QueryRunner的添加與查詢操作


Apache-DBUtils實現CRUD操作,commmons-dbutils是Apache組織提供的開源JDBC工具類,

封裝了針對於數據庫的增刪改查操作,Class QueryRunner 

TestQueryRunner

package com.aff.util;
import java.sql.Connection;
import java.sql.Date;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;
import com.aff.bean.Customer;
//commmons-dbutils是Apache組織提供的一個開源的jdbc工具類庫,
//封裝了針對於數據庫的增刪改查操作
public class TestQueryRunner { // 測試插入 @Test public void testInsert() { Connection conn = null; try { QueryRunner runner = new QueryRunner(); conn = JDBCUtilsDruid.getConnection(); String sql = "insert into customers (name,email,birth)values(?,?,?)"; runner.update(conn, sql, "蔡徐坤", "cxk@126.com", "1997-2-24"); System.out.println("添加成功"); } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtilsDruid.closeResource(conn, null, null); } } // 測試查詢 // ResultSetHandler 是個接口 // BeanHander是ResultSetHandler接口的實現類,用於封裝表中的一條記錄 @Test public void testQuery1() { Connection conn = null; try { QueryRunner runner = new QueryRunner(); conn = JDBCUtilsDBCP.getConnection(); String sql = "select id,name,birth from customers where id =?"; BeanHandler<Customer> handler = new BeanHandler<>(Customer.class); Customer customer = runner.query(conn, sql, handler, 20); System.out.println(customer); } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtilsDBCP.closeResource(conn, null, null); } } // BeanListHander是ResultSetHandler接口的實現類,用於封裝表中的多條記錄構成的集合 @Test public void testQuery2() throws Exception { Connection conn = null; try { QueryRunner runner = new QueryRunner(); conn = JDBCUtilsC3P0.getConnection(); String sql = "select id,name,birth from customers where id <?"; BeanListHandler<Customer> handler = new BeanListHandler<>(Customer.class); List<Customer> list = runner.query(conn, sql, handler, 20); list.forEach(System.out::println); } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtilsC3P0.closeResource(conn, null, null); } } // MapHander是ResultSetHandler接口的實現類,對應表中的一條記錄 // 將字段及相應字段的值作為map中的key和value // 鍵--值 鍵--值 體現 key-value // {name=何苗苗, birth=1996-02-03, id=20} @Test public void testQuery3() throws Exception { Connection conn = null; try { QueryRunner runner = new QueryRunner(); conn = JDBCUtilsC3P0.getConnection(); String sql = "select id,name,birth from customers where id =?"; MapHandler handler = new MapHandler(); Map<String, Object> map = runner.query(conn, sql, handler, 20); System.out.println(map); } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtilsC3P0.closeResource(conn, null, null); } } // MapListHander是ResultSetHandler接口的實現類,對應表中的多條記錄 // 將字段及相應的值作為map中的key和value,將這些map添加到list中 @Test public void testQuery4() throws Exception { Connection conn = null; try { QueryRunner runner = new QueryRunner(); conn = JDBCUtilsC3P0.getConnection(); String sql = "select id,name,birth from customers where id <?"; MapListHandler listHandler = new MapListHandler(); List<Map<String, Object>> list = runner.query(conn, sql, listHandler, 20); list.forEach(System.out::println); /* {name=朱茵, birth=2014-01-16, id=16} {name=何苗, birth=2014-01-17, id=18} {name=芳芳, birth=1996-03-04, id=19} */ } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtilsC3P0.closeResource(conn, null, null); } } // // ScalarHandler是ResultSetHandler接口的實現類, 用於查詢特殊值 //返回表中的記錄數 @Test public void testQuery5() throws Exception { Connection conn = null; try { QueryRunner runner = new QueryRunner(); conn = JDBCUtilsC3P0.getConnection(); String sql = "select count(*) from customers"; ScalarHandler handler = new ScalarHandler(); Long count = (Long) runner.query(conn, sql, handler); System.out.println(count); } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtilsC3P0.closeResource(conn, null, null); } } // ScalarHandler是ResultSetHandler接口的實現類, //返回表中的最大出生日期 @Test public void testQuery6() throws Exception { Connection conn = null; try { QueryRunner runner = new QueryRunner(); conn = JDBCUtilsC3P0.getConnection(); String sql = "select max(birth) from customers"; ScalarHandler handler = new ScalarHandler(); Date maxBirth = (Date) runner.query(conn, sql, handler); System.out.println(maxBirth); } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtilsC3P0.closeResource(conn, null, null); } } }

 

 

使用Dbutils關閉資源

例如:

JDBCUtilsC3P0

package com.aff.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.commons.dbutils.DbUtils;

import com.mchange.v2.c3p0.ComboPooledDataSource;

//使用C3P0數據庫連接池
public class JDBCUtilsC3P0 {
    // 把池子拿到外邊,連接池一個就夠,需要的連接從池子中拿
    private static ComboPooledDataSource cbpds = new ComboPooledDataSource("helloc3p0");

    public static Connection getConnection() throws SQLException {
        Connection conn = cbpds.getConnection();
        return conn;
    }
    public static void closeResource(Connection conn, PreparedStatement ps, ResultSet rs) {
        // 7.資源的關閉
 DbUtils.closeQuietly(conn); DbUtils.closeQuietly(ps); DbUtils.closeQuietly(rs); }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM