DBUtils

1.DbUtils
工具类

2.QueryRunner -- 两行代码搞定增删改查

(1)QueryRunner() --需要控制事务时,使用这组方法
int update(Connection conn, String sql)
Execute an SQL INSERT, UPDATE, or DELETE query without replacement parameters.
int update(Connection conn, String sql, Object... params)
Execute an SQL INSERT, UPDATE, or DELETE query.
int update(Connection conn, String sql, Object param)
Execute an SQL INSERT, UPDATE, or DELETE query with a single replacement parameter.

<T> T query(Connection conn, String sql, ResultSetHandler<T> rsh)
Execute an SQL SELECT query without any replacement parameters.
<T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
Execute an SQL SELECT query with replacement parameters.

(2)QueryRunner(DataSource ds) --不需要控制事务用这组方法
int update(String sql)
Executes the given INSERT, UPDATE, or DELETE SQL statement without any replacement parameters.
int update(String sql, Object... params)
Executes the given INSERT, UPDATE, or DELETE SQL statement.
int update(String sql, Object param)
Executes the given INSERT, UPDATE, or DELETE SQL statement with a single replacement parameter.

<T> T query(String sql, ResultSetHandler<T> rsh)
Executes the given SELECT SQL without any replacement parameters.
<T> T query(String sql, ResultSetHandler<T> rsh, Object... params)
Executes the given SELECT SQL query and returns a result object.

  1. package com.dzq.dbutils;
  2.  
  3. import java.sql.SQLException;
  4.  
  5. import org.apache.commons.dbutils.QueryRunner;
  6. import org.junit.Test;
  7.  
  8. import com.mchange.v2.c3p0.ComboPooledDataSource;
  9.  
  10. public class DbUtilsUpdate {
  11.  
  12. @Test
  13. public void add() throws SQLException{
  14. QueryRunner runner=new QueryRunner(new ComboPooledDataSource());
  15. runner.update("update account set money=? where name=?",888,"a");
  16. }
  17. }
  1. package com.dzq.dbutils;
  2.  
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7.  
  8. import org.apache.commons.dbutils.QueryRunner;
  9. import org.apache.commons.dbutils.ResultSetHandler;
  10. import org.junit.Test;
  11.  
  12. import com.dzq.domain.Account;
  13. import com.mchange.v2.c3p0.ComboPooledDataSource;
  14.  
  15. public class DBUtilsQuery {
  16. @Test
  17. public void find() throws SQLException{
  18. QueryRunner runner=new QueryRunner(new ComboPooledDataSource());
  19. String sql="select * from account where money>?";
  20. List<Account> list= runner.query(sql, new ResultSetHandler<List<Account>>() {
  21.  
  22. @Override
  23. public List<Account> handle(ResultSet rs) throws SQLException {
  24. List <Account> list =new ArrayList<Account>();
  25. while (rs.next()) {
  26.  
  27. Account acc=new Account();
  28. acc.setId(rs.getInt("id"));
  29. acc.setName(rs.getString("name"));
  30. acc.setMoney(rs.getDouble("money"));
  31. list.add(acc);
  32. }
  33. return list;
  34. }
  35.  
  36. },500);
  37. System.out.println(list);
  38. }
  39. }

3.ResultSetHandler 实现类

ArrayHandler:把结果集中的第一行数据转成对象数组。
ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。
!!!!BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
!!!!BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
ColumnListHandler:将结果集中某一列的数据存放到List中。
KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里(List<Map>),再把这些map再存到一个map里,其key为指定的列。
!!!!!ScalarHandler:获取结果集中第一行数据指定列的值,常用来进行单值查询

示例代码:

  1. package com.itheima.dbutils;
  2.  
  3. import java.sql.SQLException;
  4. import java.util.List;
  5. import java.util.Map;
  6.  
  7. import org.apache.commons.dbutils.QueryRunner;
  8. import org.apache.commons.dbutils.handlers.ArrayHandler;
  9. import org.apache.commons.dbutils.handlers.ArrayListHandler;
  10. import org.apache.commons.dbutils.handlers.BeanHandler;
  11. import org.apache.commons.dbutils.handlers.BeanListHandler;
  12. import org.apache.commons.dbutils.handlers.ColumnListHandler;
  13. import org.apache.commons.dbutils.handlers.KeyedHandler;
  14. import org.apache.commons.dbutils.handlers.MapHandler;
  15. import org.apache.commons.dbutils.handlers.MapListHandler;
  16. import org.apache.commons.dbutils.handlers.ScalarHandler;
  17. import org.junit.Test;
  18.  
  19. import com.itheima.domain.Account;
  20. import com.mchange.v2.c3p0.ComboPooledDataSource;
  21.  
  22. public class RSHanlderDemo {
  23. //ScalarHandler:获取结果集中第一行数据指定列的值,常用来进行单值查询
  24. @Test
  25. public void tes9() throws SQLException{
  26. QueryRunner runner = new QueryRunner(new ComboPooledDataSource());
  27. Long count = (Long)runner.query("select count(*) from account",new ScalarHandler());
  28. System.out.println(count);
  29. }
  30.  
  31. //KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里(List<Map>),再把这些map再存到一个map里,其key为指定的列。
  32. @Test
  33. public void tes8() throws SQLException{
  34. QueryRunner runner = new QueryRunner(new ComboPooledDataSource());
  35. Map<Object, Map<String, Object>> map = runner.query("select * from account where money>?", new KeyedHandler("id"),500);
  36. System.out.println(map);
  37. }
  38. //ColumnListHandler:将结果集中某一列的数据存放到List中。
  39. @Test
  40. public void tes7() throws SQLException{
  41. QueryRunner runner = new QueryRunner(new ComboPooledDataSource());
  42. List<Object>list = runner.query("select * from account where money>?", new ColumnListHandler(3),500);
  43. System.out.println(list);
  44. }
  45. //MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
  46. @Test
  47. public void tes6() throws SQLException{
  48. QueryRunner runner = new QueryRunner(new ComboPooledDataSource());
  49. List<Map<String, Object>> list = runner.query("select * from account where money>?", new MapListHandler(),500);
  50. System.out.println(list);
  51. }
  52.  
  53. //MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
  54. @Test
  55. public void tes5() throws SQLException{
  56. QueryRunner runner = new QueryRunner(new ComboPooledDataSource());
  57. Map<String, Object> map = runner.query("select * from account where money>?", new MapHandler(),500);
  58. System.out.println(map);
  59. }
  60.  
  61. //BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
  62. @Test
  63. public void tes4() throws SQLException{
  64. QueryRunner runner = new QueryRunner(new ComboPooledDataSource());
  65. List<Account>list = runner.query("select * from account where money>?", new BeanListHandler<Account>(Account.class),500);
  66. System.out.println(list);
  67. }
  68.  
  69. //BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
  70. @Test
  71. public void tes3() throws SQLException{
  72. QueryRunner runner = new QueryRunner(new ComboPooledDataSource());
  73. Account acc = runner.query("select * from account where money>?", new BeanHandler<Account>(Account.class),500);
  74. System.out.println(acc);
  75. }
  76. //ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。
  77. @Test
  78. public void tes2() throws SQLException{
  79. QueryRunner runner = new QueryRunner(new ComboPooledDataSource());
  80. List<Object[]> list = runner.query("select * from account where money>?", new ArrayListHandler(),500);
  81. System.out.println(list);
  82. }
  83.  
  84. //ArrayHandler:把结果集中的第一行数据转成对象数组。
  85. @Test
  86. public void test1() throws SQLException{
  87. QueryRunner runner = new QueryRunner(new ComboPooledDataSource());
  88. Object[] objs = runner.query("select * from account where money>?", new ArrayHandler(),500);
  89. System.out.println(objs);
  90. }
  91. }

20160410javaweb之JDBC---DBUtils框架的更多相关文章

  1. JDBC 学习笔记(四)—— 自定义JDBC框架+Apache—DBUtils框架+事务管理+操作多表

    本文目录:       1.自定义JDBC框架 ——数据库元数据:DataBaseMetaData        2.自定义JDBC框架 ——数据库元数据:DataBaseMetaData       ...

  2. Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用

    前面做了一个非常垃圾的小demo,真的无法直面它,菜的抠脚啊,真的菜,好好努力把.菜鸡. --WH 一.JDBC是什么? Java Data Base Connectivity,java数据库连接,在 ...

  3. JDBC第四篇--【数据库连接池、DbUtils框架、分页】

    1.数据库连接池 什么是数据库连接池 简单来说:数据库连接池就是提供连接的. 为什么我们要使用数据库连接池 数据库的连接的建立和关闭是非常消耗资源的 频繁地打开.关闭连接造成系统性能低下 编写连接池 ...

  4. JDBC【数据库连接池、DbUtils框架、分页】

    1.数据库连接池 什么是数据库连接池 简单来说:数据库连接池就是提供连接的... 为什么我们要使用数据库连接池 数据库的连接的建立和关闭是非常消耗资源的 频繁地打开.关闭连接造成系统性能低下 编写连接 ...

  5. Apache—DBUtils框架简介

    转载自:http://blog.csdn.net/fengdongkun/article/details/8236216 Apache—DBUtils框架简介.DbUtils类.QueryRunner ...

  6. JNDI和在tomcat中配置DBCP连接池 元数据的使用 DBUtils框架的使用 多表操作

    1 JNDI和在tomcat中配置DBCP连接池 JNDI(Java Naming and Directory Interface),Java命名和目录接口,它对应于J2SE中的javax.namin ...

  7. javaweb学习总结(四十一)——Apache的DBUtils框架学习

    一.commons-dbutils简介 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化 ...

  8. DBUtils框架

    一.O-R Mapping 简介    一]概念:可以理解为对象和数据库的映射.    二]常用O-R Mapping映射工具        1)Hibernate(全自动框架)        2)l ...

  9. JavaWeb 后端 <十一> 之 DBUtils 框架 (基本使用 结果集 事务处理 对表读取)

    一.数据库操作框架 1.ORM:Object Relation Mapping Hibernate:非常流行 JPA:Java Persistent API.ORM标准 MyBatis:2010年开始 ...

  10. pache—DBUtils框架简介、DbUtils类、QueryRunner类 、ResultSetHandler接口

    Apache—DBUtils框架简介.DbUtils类.QueryRunner类 .ResultSetHandler接口 commons-dbutils 是 Apache 组织提供的一个开源 JDBC ...

随机推荐

  1. Tomcat启动时为什么要配置CATALINA_HOME环境变量??

    CATALINA_HOME的值被设为Tomcat的安装目录,如果环境变量CATALINA_HOME已经存在,则通过这个环境变量调用bin目录下的“catalina.bat start”命令 1.Tom ...

  2. 经典sql(3)

    描述:有两个表A 和B ,均有key 和value 两个字段,如果B 的key 在A 中也有,就把B 的value 换为A 中对应的value 表B此处为tbaley的情况:      A: tabl ...

  3. ACM 2015年上海区域赛A题 HDU 5572An Easy Physics Problem

    题意: 光滑平面,一个刚性小球,一个固定的刚性圆柱体 ,给定圆柱体圆心坐标,半径 ,小球起点坐标,起始运动方向(向量) ,终点坐标 ,问能否到达终点,小球运动中如果碰到圆柱体会反射. 学到了向量模板, ...

  4. mysql 一个较特殊的问题:You can't specify target table for update in FROM clause

    mysql 一个较特殊的问题:You can't specify target table for update in FROM clause 即:不能先select出同一表中的某些值,再update ...

  5. 【转载】HBase 数据库检索性能优化策略

    转自:http://www.ibm.com/developerworks/cn/java/j-lo-HBase/index.html 高性能 HBase 数据库 本文首先介绍了 HBase 数据库基本 ...

  6. Codeforces245H - Queries for Number of Palindromes(区间DP)

    题目大意 给定一个字符串s,q个查询,每次查询返回s[l-r]含有的回文子串个数(题目地址) 题解 和有一次多校的题目长得好相似,这个是回文子串个数,多校的是回文子序列个数 用dp[i][j]表示,s ...

  7. Linux 下的五种 IO 模型

    概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的 ...

  8. .NET版本问题 转[.Net Framework Initialization Error – Unable to find a version of the runtime to run this applicatio]

    转自:http://blog.csdn.net/rrrrssss00/article/details/7069009 dev注册程序问题部署一个VS2010开发的程序时遇到 了一个非常奇怪的问题,客户 ...

  9. Sublime Text 2 使用心得

    一. 前言 作为一个前端,有一款好的开发利器是必不可少的,editplus.notepad++都是不错的工具,体积轻巧,启动迅速(dw太浮肿了).最近,又有一款新的编辑器诞生,席卷前端界,惹得无数喜爱 ...

  10. A Plain English Guide to JavaScript Prototypes

    When I first started learning about JavaScript object model my reaction was of horror and disbelief. ...