JDBC连接池的九种查询

package JDBC_Demo;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.KeyedHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class TestQueryRunner2 {

public static void main(String[] args) {
	ComboPooledDataSource cp=new ComboPooledDataSource();
	try {
		DbUtils.loadDriver("com.mysql.jdbc.Driver");
		cp.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/ch003?useUnicode=true&characterEncoding=UTF-8");
		cp.setUser("root");
		cp.setPassword("wsl123456");
		cp.setInitialPoolSize(10);
		cp.setMaxPoolSize(20);
		cp.setMinPoolSize(2);
		QueryRunner qr=new QueryRunner(cp);
		String sql="select * from account";
		/**
		 * 第一种查询
		 * ArrayHandler
		 * 把结果集中的第一行数据转成对象数组。
		 */
		/*Object [] a=qr.query(sql,new ArrayHandler());
		for(Object o:a) {
			System.out.print(o+"	");
		}
		*/
		/**
		 * 第二种查询
		 * ArrayListHandler
		 * 把结果集中的每一行数据都转成一个数组,再存放到List中
		 */
		/*List<Object[]> l=qr.query(sql,new ArrayListHandler());
		for(Object[] o:l) {
			for(Object oo:o) {
				System.out.print(oo+"	");
			}
			System.out.println();
		 }*/
		/**
		 * 第三种查询
		 * BeanHandler
		 * 将结果集中的第一行数据封装到一个对应的JavaBean实例中
		 */
		Account a=qr.query(sql,new BeanHandler<Account>(Account.class));
		System.out.println(a);
		/**
		 * 第四种查询
		 * BeanListHandler
		 * 将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
		 */
		/*List<Account> ls=qr.query(sql,new BeanListHandler<Account>(Account.class));
		for(Account a:ls) {
			System.out.println(a);
		}*/
		/**
		 * 第五种
		 * ColumnListHandler
		 * 将结果集中某一列的数据存放到List中。
		 * <Integer>尖括号中的类型根据("cash")指定的列所属的类型来决定
		 */
		/*List<Integer> l=qr.query(sql,new ColumnListHandler<Integer>("cash"));
		for(Integer o:l) {
			System.out.println(o);
		}*/
		/**
		 * 第六种
		 * KeyedHandler
		 * 将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key
		 */
		/*Map<String, Map<String, Object>> m=qr.query(sql,new KeyedHandler<String>(4));
		for(String a:m.keySet()) {
			System.out.println(m.get(a));
		}*/
		/**
		 * 第七种
		 * MapHandler
		 */
		/*Map m = qr.query(sql, new MapHandler());
		System.out.println(m.get("id")+"  "+m.get("name")+"  "+m.get("cash"));*/
		/**
		 * 第八种
		 * MapListHandler
		 */
		/*List<Map<String, Object>> a=qr.query(sql,new MapListHandler());
		for(Map<String, Object> m:a) {
			System.out.println(m.get("name")+" "+m.get("cash"));
		}*/
		/**
		 * 结果集第九种处理方法、
		 * 对于查询后,只有一个结果
		 */
		/*String st = "select count(*) from account";
		long a =  qr.query(st, new ScalarHandler<Long>());
		System.out.println(a);
		*/
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

}

public static ComboPooledDataSource getDataSource() {
	ComboPooledDataSource cbp=new ComboPooledDataSource();
	
	return null;
}

}

原文地址:https://www.cnblogs.com/king8/p/11002504.html