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+"\t");
}
*/
/**
* 第二种查询
* ArrayListHandler
* 把结果集中的每一行数据都转成一个数组,再存放到List中
*/
/*List<Object[]> l=qr.query(sql,new ArrayListHandler());
for(Object[] o:l) {
for(Object oo:o) {
System.out.print(oo+"\t");
}
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;
}

}

JDBC连接池的九种查询的更多相关文章

  1. JDBC 连接池的两种方式——dbcp & c3p0

    申明:本文对于连接资源关闭采用自定义的 JDBCUtils 工具: package com.test.utils; import java.sql.Connection; import java.sq ...

  2. Spring+SpringMVC+MyBatis+easyUI整合优化篇(九)数据层优化-jdbc连接池简述、druid简介

    日常啰嗦 终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和da ...

  3. Jmeter(九)JDBC连接池

    JDBC为java访问数据库提供通用的API,可以为多种关系数据库提供统一访问.因为SQL是关系式数据库管理系统的标准语言,只要我们遵循SQL规范,那么我们写的代码既可以访问MySQL又可以访问SQL ...

  4. Tomcat 的 JDBC 连接池

    JDBC 连接池 org.apache.tomcat.jdbc.pool 是 Apache Commons DBCP 连接池的一种替换或备选方案. 那究竟为何需要一个新的连接池? 原因如下: Comm ...

  5. 【JDBC&Dbutils】JDBC&JDBC连接池&DBUtils使用方法(重要)

    -----------------------JDBC---------- 0.      db.properties文件 driver=com.mysql.jdbc.Driver url=jdbc: ...

  6. JDBC连接池和DBUtils

    本节内容: JDBC连接池 DBUtils 一.JDBC连接池 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采取连接池技术,来共享连接Conne ...

  7. JDBC连接池&DBUtils

    JDBC连接池 DBCP:Apache推出的Database Connection Pool 使用步骤: > 添加jar包  commons-dbcp-1.4.jar  commons-pool ...

  8. JDBC连接池&DBUtils使用

    使用连接池改造JDBC的工具类: 1.1.1          需求: 传统JDBC的操作,对连接的对象销毁不是特别好.每次创建和销毁连接都是需要花费时间.可以使用连接池优化的程序. * 在程序开始的 ...

  9. 数据层优化-jdbc连接池简述、druid简介

    终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和dao层的优化 ...

随机推荐

  1. java8 关于Set集合的线程安全使用

    场景:并发多线程,往Set集合中存放数据时,发现最终的数量结果不对,经过排查,没有使用线程安全的Set导致 哈哈,不会描述,代码解释一切,下面代码,使用的 Sets.newHashSet() 和 Co ...

  2. gcc编译的时候报错 error trying to exec 'cc1plus': execvp 解决方法

    sudo apt install --reinstall build-essential -y

  3. 【2019年08月06日】A股最便宜的股票

    查看更多A股最便宜的股票:androidinvest.com/CNValueTop/ 便宜指数 = PE + PB + 股息 + ROE,四因子等权,数值越大代表越低估. 本策略只是根据最新的数据来选 ...

  4. 在Linux上利用curl 命令模拟 HTTP GET/POST 请求

    本文系转载,原文地址:https://www.cnblogs.com/alfred0311/p/7988648.html 序言 在 Linux 操作系统上对后端程序进行测试的时候,需要进行模拟连接或者 ...

  5. 论文阅读: Building a 3-D Line-Based Map Using Stereo SLAM

    Abstract 一个把直线用作feature的SLAM系统. 跟点相比, 直线对于环境的结构提供了更丰富的信息, 也让其鞥有可能推断地图的空间语义. 使用了Plucker line coordian ...

  6. Sitecore性化 - 您需要了解的4件事

    Sitecore非常强大,是一个数字体验平台.它可以帮助您取悦并留住客户.它可以帮助您衡量和评估广告系列.它使你成为一个更好的营销人员.它可以帮助您获得结果! 它结合了易于使用的网站内容管理系统和数字 ...

  7. sql server删除重复记录只保留一条

    今天遇到一个历史导入数据重复的问题,于是要删除重复的记录,一开始想用子查询的方式找到要删除记录的id删除,后来发现DELETE语句可以直接用外连接,这样更加简单,效率也更高. delete sys_p ...

  8. C#异步的世界【上】(转)

    新进阶的程序员可能对async.await用得比较多,却对之前的异步了解甚少.本人就是此类,因此打算回顾学习下异步的进化史. 本文主要是回顾async异步模式之前的异步,下篇文章再来重点分析async ...

  9. Spring-Boot-操作-Redis,三种方案全解析!

    在 Redis 出现之前,我们的缓存框架各种各样,有了 Redis ,缓存方案基本上都统一了,关于 Redis,松哥之前有一个系列教程,尚不了解 Redis 的小伙伴可以参考这个教程: Redis 教 ...

  10. 2019-11-29-WPF-从触摸消息转触摸事件

    原文:2019-11-29-WPF-从触摸消息转触摸事件 title author date CreateTime categories WPF 从触摸消息转触摸事件 lindexi 2019-11- ...