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. Spring 计划

    3.0----------------------------------------------------- SCRUM 流程的步骤2: Spring 计划 1. 确保product backlo ...

  2. C# 刷新页面浏览次数(点击量)+1

    页面视图: <p class="text-center text-muted">文章来源:@ent.Origin 点击量:@ent.Hits <Script La ...

  3. 14. 星际争霸之php设计模式--状态模式

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

  4. 二叉树JAVA实现

    为了克服对树结构编程的畏惧感和神秘感,下定决心将二叉树的大部分操作实现一遍,并希望能够掌握二叉树编程的一些常用技术和技巧.关于编程实现中的心得和总结,敬请期待!~ [1]  数据结构和表示: 二叉树的 ...

  5. OBD K线抓包 II

    9141的激活过程是先发WakeUp, 然后用Link: const u8 LinkCmd9141[7]  = {6,0x68,0x6A,0xF1,0x01,0x00,0xC4}; 14230的Lin ...

  6. HttpContext.Current.Cache使用文件依赖问题

    HttpContext.Current.Cache.Insert("FCacheMs", tb, New CacheDependency(HttpContext.Current.S ...

  7. php计算两个日期相差 年 月 日

    在PHP程序中,很多时候都会遇到处理时间的问题,比如:判断用户在线了多长时间,共登录了多少天,两个帖子发布的时间差或者是不同操作之间的日志记录等等.在文章中,简单地举例介绍了PHP中如何计算两个日期相 ...

  8. [问题2015S02] 复旦高等代数 II(14级)每周一题(第三教学周)

    [问题2015S02]  设 \(a,b,c\) 为复数且 \(bc\neq 0\), 证明下列 \(n\) 阶方阵 \(A\) 可对角化: \[A=\begin{pmatrix} a & b ...

  9. EXCEL表格单元格中包含数字英文和汉字,如何自动去掉汉字,保留英文和数字

    EXCEL表格单元格中包含数字英文和汉字,如何自动去掉汉字,保留英文和数字 Function 求数字和字母(对象 As String) '在文本与数字混杂中提取数字和字母   Dim myReg    ...

  10. 4 .Swift函数|闭包

    在编程中,我们常把能完成某一特定功能的一组代码,并且带有名字标记类型叫做函数,在C语言中,我们知道函数名就是一个指针,它指向了函数体内代码区的第一行代码的地址,在swift中也具有同样的功效. 在Sw ...