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. Django:使用PyCharm创建django项目并发布到apache2.4

    环境: python2.7 x64 win7 x64 django (通过pycharm创建时自动安装)版本:1.10.2 apache:2.4 x64 下载pycharm个人版非社区版本并激活 起初 ...

  2. Leetcode: Number of Boomerangs

    Given n points in the plane that are all pairwise distinct, a "boomerang" is a tuple of po ...

  3. @Autowired获取被@Service注解的bean为null的问题

    先说结论:Spring容器还没有加载完Bean,你就去调用了! 一般的注解没加,bean的名字写错都好检查,但是逻辑错误就需要看清自己的思维过程了. 实例:在使用ActiveMq的过程中,第一步对Ac ...

  4. dotnetnuke peek. glance.

    /**** 15:59:39.05 ***/ use dotnetnuke to create websites: 1. install 2. create webpage template 3. c ...

  5. 原生js快速渲染dom节点

    function renderDom(str){ var _div = document.createElement('div'); _div.innerHTML = str; var dom_tem ...

  6. android 消息机制

    一.Android应用程序的主线程主要用于更新UI界面,并且主线程不能做耗时操作,否则会引起ANR:这种情况下需要开一个子线程来进行耗时操作,动作完成之后,子线程发消息给主线程通知其更新UI显示,常见 ...

  7. 混合使用 ForkJoin, Akka, Future 实现一千万个不重复整数的排序

    定位  本文适合于想要了解新语言 Scala 以及异步并发编程框架 Akka, Future 的筒鞋. 读完本文后,将了解如何使用 ForkJoin 框架.如何使用 Akka 构建并发程序.如何使用 ...

  8. iocp-socket 服务(借鉴别人的,根据自己的需要改的)未完待续

    #pragma once #include <WinSock2.h> #include <MSWSock.h> #include <Windows.h> #prag ...

  9. 为您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus

    CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...

  10. ROS探索总结(三)——ROS新手教程【转】

    转自:http://blog.csdn.net/hcx25909/article/details/8811313 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 一ROS的 ...