package com.lizhou.Test;

 import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set; import javax.sql.DataSource; 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.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler; import com.lizhou.Domain.Account;
import com.lizhou.Util.MysqlUtil; /**
* DbUtils框架的使用
* 目的:减轻CURD操作
* DbUtils框架最核心的类,就是QueryRunner类,构造其有空参构造和带连接池(DataSource)的构造
*
*
*
* @author bojiangzhou
*
*/
public class DbUtils { public static void main(String[] args) {
/**
* 数据库为test,在c3p0-config.xml中配置
*/ // queryRunner(); //下面是ResultSetHandler的接口的各种实现类的用法(7个实现类) // beanHandler(); //针对JavaBean // beanListHandler(); //针对JavaBean // arrayHandler(); //针对数组 // arrayListHandler(); //针对数组 // mapHandler(); //针对Map // mapListHandler(); //针对Map scalarHandler(); //针对Long } //QueryRunner
public static void queryRunner(){
//获取连接池
DataSource ds = MysqlUtil.getPool();
//用连接池构造一个QueryRunner
QueryRunner qr = new QueryRunner(ds); // String sql = "update account set name=? where id=?";
String sql = "insert into account(name, money) values(?, ?)"; try {
// qr.update(sql, new Object[]{"O(∩_∩)O哈哈~", 2});
qr.update(sql, new Object[]{"一生有你", 25000});
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} //BeanHandler
public static void beanHandler(){
QueryRunner qr = new QueryRunner(MysqlUtil.getPool()); String sql = "select * from account where id = ?"; try {
Account acc = (Account) qr.query(sql, new Object[]{3}, new BeanHandler(Account.class));
System.out.println(acc.getId()+" "+acc.getName()+" "+acc.getMoney());
} catch (SQLException e) {
e.printStackTrace();
} } //BeanListHandler
public static void beanListHandler(){
QueryRunner qr = new QueryRunner(MysqlUtil.getPool()); String sql = "select * from account"; try {
List<Account> accounts = (List<Account>) qr.query(sql, new BeanListHandler(Account.class));
for(Account a : accounts){
System.out.println(a.getId()+" "+a.getName()+" "+a.getMoney());
}
} catch (SQLException e) {
e.printStackTrace();
}
} //ArrayHandler
public static void arrayHandler(){
QueryRunner qr = new QueryRunner(MysqlUtil.getPool()); String sql = "select * from account where money=?"; try {
Object[] a = (Object[]) qr.query(sql, 10000, new ArrayHandler());
for(int i = 0;i < a.length;i++){
System.out.print(a[i]+" ");
}
System.out.println("\n------------------------------");
} catch (SQLException e) {
e.printStackTrace();
}
} //ArrayListHandler
public static void arrayListHandler(){
QueryRunner qr = new QueryRunner(MysqlUtil.getPool()); String sql = "select * from account"; try {
List<Object[]> accounts = (List<Object[]>) qr.query(sql, new ArrayListHandler());
for(Object[] obj : accounts){
for(int i = 0;i < obj.length;i++){
System.out.print(obj[i]+" ");
}
System.out.println("\n------------------------------");
}
} catch (SQLException e) {
e.printStackTrace();
}
} //MapHandler
public static void mapHandler(){
QueryRunner qr = new QueryRunner(MysqlUtil.getPool()); String sql = "select * from account"; try {
Map<Object, Object> map = (Map<Object, Object>) qr.query(sql, new MapHandler());
Set<Entry<Object, Object>> entry = map.entrySet();
for(Entry e : entry){
System.out.print(e.getKey()+" ");
System.out.println(e.getValue());
}
} catch (SQLException e) {
e.printStackTrace();
}
} //MapListHandler
public static void mapListHandler(){
QueryRunner qr = new QueryRunner(MysqlUtil.getPool()); String sql = "select * from account"; try {
List< Map<Object, Object> > maps = (List<Map<Object, Object>>) qr.query(sql, new MapListHandler());
for(Map<Object, Object> map : maps){
Set<Entry<Object, Object>> entry = map.entrySet();
for(Entry e : entry){
System.out.print(e.getKey()+" ");
System.out.println(e.getValue());
}
System.out.println("-------------------------");
} } catch (SQLException e) {
e.printStackTrace();
}
} //ScalarHandler 只返回一行一列数据
public static void scalarHandler(){
QueryRunner qr = new QueryRunner(MysqlUtil.getPool()); String sql = "select count(*) from account"; try {
Object obj = qr.query(sql, new ScalarHandler());
System.out.println(obj);
} catch (SQLException e) {
e.printStackTrace();
}
} }

DbUtils常用API的使用 方便以后查阅的更多相关文章

  1. Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API

    不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...

  2. java常用API的总结(1)

    本篇是对于这一段时间以来接触到的常用api的一些总结,便于以后的查阅.... 一.正则表达式 对于正则表达式,我的感觉就是当我们在做某些题的时候正则表达式会省去我们很多的时间,并且正则表达式的使用格式 ...

  3. 16常用API

    常用API 今日内容介绍 u 正则表达式 u Date u DateFormat u Calendar 第1章 正则表达式 1.1 正则表达式的概念 正则表达式(英语:Regular Expressi ...

  4. 常用API(正则表达式、Date、DateFormat、Calendar)

    常用API 今日内容介绍 u 正则表达式 u Date u DateFormat u Calendar 第1章 正则表达式 1.1 正则表达式的概念 正则表达式(英语:Regular Expressi ...

  5. 常用API(Object、String、StringBuffer、用户登陆注册)

    常用API 今日内容介绍 u Object u String u StringBuilder 第1章 Java的API及Object类 在以前的学习过程中,我们都在学习对象基本特征.对象的使用以及对象 ...

  6. 215 day01_Object类、常用API

    day01[Object类.常用API] 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 教学目标 -[ ] 能 ...

  7. html5 canvas常用api总结(一)

    1.监听浏览器加载事件. window.addEventListener("load",eventWindowLoaded,false); load事件在html页面加载结束时发生 ...

  8. compass General 常用api学习[Sass和compass学习笔记]

    compass 中一些常用api 包括一些浏览器hack @import "compass/utilities/general" Clearfix Clearfix 是用来清除浮动 ...

  9. java基础3.0:Java常用API

    本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...

随机推荐

  1. Linux:Ubuntu 14.04 Server 离线安装Jjava8(及在线安装)

    (离线安装)首先,通过winscp上传本地下载好的jdk-8u102-linux-x64.gz (离线安装)将jdk-8u102-linux-x64.gz解压到到/usr/lib/jvm下,并把文件夹 ...

  2. Hadoop:搭建hadoop集群

    操作系统环境准备: 准备几台服务器(我这里是三台虚拟机): linux ubuntu 14.04 server x64(下载地址:http://releases.ubuntu.com/14.04.2/ ...

  3. SD卡读写遇到的一些函数

    SD_SPI_ReadWriteByte(0XFF): 你的数据线写0xff,就是一直保持高,clk就有了8个,可以说只是发送的数据是0xff,这又不是SD的命令,但是它必须要靠控制器提供时钟才能工作 ...

  4. Python 函数式编程 & Python中的高阶函数map reduce filter 和sorted

    1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数 ...

  5. MFC 框架技术简单研讨

    引用:http://www.cnblogs.com/chinazhangjie/archive/2011/09/20/2181986.html 正文: 第一讲 Win32 App  和  MFC Fr ...

  6. 10. 星际争霸之php设计模式--原型模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  7. 十、Java基础---------面向对象之抽象类与接口

    抽象类(abstract)     当编写一个类时,时常会为该类定义一些方法,这些方法的使用用以描述该类的行为方式,那么这些方法都有具体的方法体.但是在某些情况下,某个父类只是知道子类应该包含怎样的方 ...

  8. 前端开发面试题JS

    1.介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol(创建后独一无二且不可变的数据类型 ) 2. ...

  9. 基于tp框架实现的递归城市查询

    控制器层: 接下来就是模型层: 如果说你的数据量庞大到致使apache或者nginx停止运行,有两点原因: 1.代码耦合性不高,代码有错误: 2.php.ini里面有一个memory_limit的这个 ...

  10. 如何通过CRM评估客户价值和提高客户忠诚度?

    随着市场经济的日益繁荣,同行业之间企业的竞争越来越激烈,企业纷纷各出奇招吸引和挖掘客户,力求让自己的品牌成为更多客户的第一选择.那么,我们可以用什么方法来评估客户价值,提高客户忠诚度呢? 在互联网时代 ...