转自:http://blog.csdn.net/earbao/article/details/44901061
apache DBUtils是java编程中的数据库操作实用工具,小巧简单实用,
1.对于数据表的读操作,他可以把结果转换成List,Array,Set等java集合,便于程序员操作;
2.对于数据表的写操作,也变得很简单(只需写sql语句)
3.可以使用数据源,使用JNDI,数据库连接池等技术来优化性能--重用已经构建好的数据库连接对象,而不像php,asp那样,费时费力的不断重复的构建和析构这样的对象。
DBUtils包括3个包:
org.apache.commons.dbutils
org.apache.commons.dbutils.handlers
org.apache.commons.dbutils.wrappers
DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
org.apache.commons.dbutils
DbUtils 关闭链接等操作
QueryRunner 进行查询的操作
org.apache.commons.dbutils.handlers
ArrayHandler :将ResultSet中第一行的数据转化成对象数组
ArrayListHandler将ResultSet中所有的数据转化成List,List中存放的是Object[]
BeanHandler :将ResultSet中第一行的数据转化成类对象
BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象
ColumnListHandler :将ResultSet中某一列的数据存成List,List中存放的是Object对象
KeyedHandler :将ResultSet中存成映射,key为某一列对应为Map。Map中存放的是数据
MapHandler :将ResultSet中第一行的数据存成Map映射
MapListHandler :将ResultSet中所有的数据存成List。List中存放的是Map
ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object
org.apache.commons.dbutils.wrappers
SqlNullCheckedResultSet :对ResultSet进行操作,改版里面的值
StringTrimmedResultSet :去除ResultSet中中字段的左右空格。Trim()
主要方法:
DbUtils类:启动类
ResultSetHandler接口:转换类型接口
MapListHandler类:实现类,把记录转化成List
BeanListHandler类:实现类,把记录转化成List,使记录为JavaBean类型的对象
Qrery Runner类:执行SQL语句的类
Queryrunner.query    —————只可以执行select语句。
Queryrunner.update  —————只可以接收update,delte,insert语句
BeanHandler          ——————返回一个 Bean,结果封装到Bean。只查询第一行。适合根据id查询唯一的一行
BeanListHandler     ——————返回List<Bean>所有行,都封装到List,适合于查询多个结果
MapHandler           ——————与BeanHandler应,只返回第一行,封装成Map类型 - 也适合于查询一个结果集的    适合于关联查询,且没有匹配的Bean。
MapListHandler      ——————与BeanListHandler对应,返回所有,封装成List<Map>类型

ScalarHandler        ——————标量- 用于select count(1)|sum|avg|max …一些聚合函数

  1. package com.jiepu.testdbutil;
  2. import java.sql.ResultSet;
  3. import java.sql.ResultSetMetaData;
  4. import java.sql.SQLException;
  5. import java.sql.Statement;
  6. import java.util.Date;
  7. import java.util.List;
  8. import java.util.Map;
  9. import org.apache.commons.dbutils.QueryRunner;
  10. import org.apache.commons.dbutils.ResultSetHandler;
  11. import org.apache.commons.dbutils.handlers.BeanHandler;
  12. import org.apache.commons.dbutils.handlers.BeanListHandler;
  13. import org.apache.commons.dbutils.handlers.MapHandler;
  14. import org.apache.commons.dbutils.handlers.MapListHandler;
  15. import org.apache.commons.dbutils.handlers.ScalarHandler;
  16. import org.junit.AfterClass;
  17. import org.junit.BeforeClass;
  18. import org.junit.Test;
  19. import org.sqlite.SQLiteDataSource;
  20. //http://www.cnblogs.com/liuwt365/p/4111584.html
  21. public class TestDBUtils {
  22. private static SQLiteDataSource dataSource;
  23. private static QueryRunner runner;
  24. private static String tableName="User";
  25. @BeforeClass
  26. public static  void setUpBeforeClass() throws Exception {
  27. dataSource= new SQLiteDataSource();
  28. dataSource.setUrl("jdbc:sqlite:testdbutil.db");
  29. runner=new QueryRunner(dataSource);
  30. execute("CREATE TABLE IF NOT EXISTS "+tableName+"(id integer primary key autoincrement, name varchar(50),password varchar(50)," +
  31. "age integer,createdate integer)",dataSource);
  32. }
  33. public static int execute(String sql ,SQLiteDataSource dataSource){
  34. Statement statement;
  35. int result =0;
  36. try {
  37. statement = dataSource.getConnection().createStatement();
  38. result= statement.executeUpdate(sql);
  39. } catch (SQLException e) {
  40. e.printStackTrace();
  41. }
  42. return result;
  43. }
  44. @Test
  45. public void Query1() throws Exception
  46. {
  47. //String sql="INSERT INTO users VALUES ('U002','tom','4321' )";
  48. //runner.update(sql);
  49. String sql="INSERT INTO "+tableName+"(name,password,age,createdate) VALUES (?,?,?,?)";
  50. runner.update(sql,"Jim","123456","24",new Date().getTime());
  51. runner.update(sql,"Kim","1234567","24",new Date().getTime());
  52. runner.update(sql,"北京","12345678","24",new Date().getTime());
  53. runner.update(sql,"嘉兴","123456789","24",new Date().getTime());
  54. runner.update(sql,"tom","123456789","24",new Date().getTime());
  55. System.out.println(dataSource);
  56. }
  57. @Test
  58. public void Query2() throws Exception
  59. {
  60. //String sql=" UPDATE users SET NAME='Kim' WHERE NAME='jim' ";
  61. //runner.update(sql);
  62. String sql=" UPDATE "+tableName+" SET name=? WHERE name=? ";
  63. runner.update(sql,"lily","Kim");
  64. Query5();
  65. }
  66. @Test
  67. public void Query3() throws Exception
  68. {
  69. //String sql="DELETE FROM users WHERE NAME='lily' ";
  70. //runner.update(sql);
  71. String sql="DELETE FROM "+tableName+" WHERE name=? ";
  72. runner.update(sql,"tom");
  73. Query5();
  74. }
  75. @Test
  76. public void Query4() throws Exception
  77. {
  78. //String sql="SELECT * FROM users where id ='U002' ";
  79. //user u= runner.query(sql, new  BeanHandler<user>(user.class));
  80. String sql="SELECT * FROM "+tableName+" where id =? ";
  81. User u=runner.query(sql, new BeanHandler<User>(User.class),"2");
  82. System.out.println(u);
  83. }
  84. @Test
  85. public void Query5() throws Exception
  86. {
  87. String sql="select * from "+tableName;
  88. List<User> list= runner.query(sql, new BeanListHandler<User>(User.class));
  89. for(User u:list)
  90. {
  91. System.out.println(u);
  92. }
  93. }
  94. @Test
  95. public void Query6() throws Exception
  96. {
  97. String sql="select id,name,password from "+tableName;
  98. Map<String, Object> map= runner.query(sql, new MapHandler());
  99. System.out.println(map.toString());
  100. }
  101. @Test
  102. public void Query7() throws Exception
  103. {
  104. String sql="select id,name,password from "+tableName;
  105. List<Map<String , Object>> list= runner.query(sql, new MapListHandler());
  106. System.out.println(list);
  107. }
  108. @Test
  109. public void Query8() throws Exception
  110. {
  111. String sql="select count(*) from "+tableName;
  112. Object obj=runner.query(sql, new ScalarHandler());
  113. int i=Integer.valueOf(obj.toString());
  114. System.out.println(i);
  115. }
  116. @Test
  117. public void batch()
  118. {
  119. /**String sql="INSERT INTO "+tableName+"(name,password,age,createdate) VALUES (?,?,?,?)";
  120. List<User> users=new ArrayList<User>();
  121. users.add(new User());
  122. runner.batch(sql, users.toArray());
  123. Query5();*/
  124. }
  125. @Test
  126. public void custom() throws SQLException
  127. {
  128. ResultSetHandler<User[]> h = new ResultSetHandler<User[]>() {
  129. public User[] handle(ResultSet rs) throws SQLException {
  130. if (!rs.next()) {
  131. return null;
  132. }
  133. ResultSetMetaData meta = rs.getMetaData();
  134. int cols = meta.getColumnCount();
  135. User[] result = new User[cols];
  136. for (int i = 0; i < cols; i++) {
  137. User user=new User();
  138. user.setId(rs.getInt(1));
  139. user.setName(rs.getString(2));
  140. user.setPassword(rs.getString(3));
  141. user.setAge(rs.getLong(4));
  142. user.setCreatedate(rs.getLong(5));
  143. result[i]=user;
  144. rs.next();
  145. }
  146. return result;
  147. }
  148. };
  149. User[] result = runner.query("SELECT * FROM "+tableName+" WHERE age=?", h, "24");
  150. for (User user : result) {
  151. System.out.println(user);
  152. }
  153. }
  154. //http://wenku.baidu.com/view/6d4bb27602768e9951e73849.html
  155. @AfterClass
  156. public static void setUpAfterclass()
  157. {
  158. dataSource=null;
  159. runner=null;
  160. }
  161. }
  1. package com.jiepu.testdbutil;
  2. public class User {
  3. //使用dbutil 实体类成员不要使用基本类型int long 应该使用封装类型 Integer Long
  4. private Integer id;
  5. private String name;
  6. private String password;
  7. private Long age;
  8. private Long createdate;
  9. public Integer getId() {
  10. return id;
  11. }
  12. public void setId(Integer id) {
  13. this.id = id;
  14. }
  15. public String getName() {
  16. return name;
  17. }
  18. public void setName(String name) {
  19. this.name = name;
  20. }
  21. public String getPassword() {
  22. return password;
  23. }
  24. public void setPassword(String password) {
  25. this.password = password;
  26. }
  27. public Long getAge() {
  28. return age;
  29. }
  30. public void setAge(Long age) {
  31. this.age = age;
  32. }
  33. public Long getCreatedate() {
  34. return createdate;
  35. }
  36. public void setCreatedate(Long createdate) {
  37. this.createdate = createdate;
  38. }
  39. @Override
  40. public String toString() {
  41. return "User [id=" + id + ", name=" + name + ", password=" + password
  42. + ", age=" + age + ", createdate=" + createdate + "]";
  43. }
  44. }

maven pom.xml

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.jiepu</groupId>
  5. <artifactId>testdbutil</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <packaging>jar</packaging>
  8. <name>testdbutil</name>
  9. <url>http://maven.apache.org</url>
  10. <properties>
  11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  12. </properties>
  13. <dependencies>
  14. <dependency>
  15. <groupId>junit</groupId>
  16. <artifactId>junit</artifactId>
  17. <version>4.8.1</version>
  18. </dependency>
  19. <dependency>
  20. <groupId>commons-dbutils</groupId>
  21. <artifactId>commons-dbutils</artifactId>
  22. <version>1.6</version>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.xerial</groupId>
  26. <artifactId>sqlite-jdbc</artifactId>
  27. <version>3.8.7</version>
  28. </dependency>
  29. </dependencies>
  30. </project>

apache DBUtils 使用例子demo的更多相关文章

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

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

  2. Apache DBUtils使用总结 【转】

    Apache DBUtils使用总结   DBUtils是个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果集封装成JavaBean,这就为我们做了最枯燥乏味. ...

  3. Apache—DBUtils框架简介

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

  4. Apache—dbutils开源JDBC工具类库简介

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

  5. org.apache.hadoop.util.Shell demo/例子

    package cn.shell; import java.io.IOException; import org.apache.hadoop.util.Shell; public class Shel ...

  6. Apache DbUtils - JDBC轻量级封装的工具包

    前段时间使用了Apache Common DbUtils这个工具,在此留个印,以备不时查看.大家都知道现在市面上的数据库访问层的框架很多,当然很多都是包含了OR-Mapping工作步骤的例如大家常用的 ...

  7. Apache DbUtils 探秘

    听说Apache的DbUtils很好用,而且是对jdbc的简单的封装,所以可以和jdbc一起混搭,多以今天就来尝试一下,关于DbUtils 是如何使用的. 准备 数据库: MySQL 依赖: mysq ...

  8. Apache—DBUtils框架

    1.所需要jar包 commons-collections-2.1.1.jarmchange-commons-java-0.2.11.jarmysql-connector-java-5.1.18-bi ...

  9. DbUtils使用例子

    DbUtils: JDBC Utility Component Examples This page provides examples that show how DbUtils may be us ...

随机推荐

  1. windows7下解决caffe check failed registry.count(type) == 1(0 vs. 1) unknown layer type问题

    在Windows7下调用vs2013生成的Caffe静态库时经常会提示Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer t ...

  2. 4-[多进程]-互斥锁、Queue队列、生产者消费者

    1.互斥锁 (1)为什么需要互斥锁 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 而共享带来的是竞争,竞争带来的结果就是错乱,如下 #并发运行,效率 ...

  3. 【HNOI2013】消毒

    题面 题解 当只有二维时,就是一个二分图匹配的板子题 三维的时候就很好做了,暴力枚举一维的情况,因为\(\min(x,y,z) = \sqrt{5000} < 18\),于是时间复杂度有保证 代 ...

  4. jsp jstl 值空格拼接导致的异常

    红线标记处多了个空格,所以出现值错误

  5. Java学习技术图

    最近,在研究docker,作为一个程序员,要想提高自己的竞争力,必须时刻保持学习的态度,技多不压身:发现从事Java工作以来,买了很多书,也逛了很多技术贴,技术的平面宽度是不断的延伸,有些是工作中需要 ...

  6. Qt-网易云音乐界面实现-7 消息中心实现,主要是QListWidget 自定义Item 和QTabwidget使用

    最近写的有点烦躁, 感觉内容真的很多!很多!很多. 目前真的想知道网易官方在出这款产品是,用了多少人和多长时间. 今天写的这个消息中心,有点糙,只是原理实现了没有完全复制过来,心里有团火,不想写了. ...

  7. Android Studio|IntelliJ IDEA 上传代码到码云

    码云 新建项目 Android Studio|IntelliJ IDEA 然后仓库就创建好了 此时左方文件应显示为红色 添加代码到git仓库 提交代码到git仓库 push等待被拒绝 拉取README ...

  8. 服务发现与消费 --> Spring Cloud Eureka

    在上两篇文章中,我们已经搭建起微服务架构中的核心组件 服务注册 中心(包括单节点模式和高可用模式).同时, 还对上一章中实现的Spring Boot入门程序 做了改造. 通过简单的配置,使该程序注册到 ...

  9. python破解网吧收费系统,远控网吧电脑设备!

      我今天呢 , 我就没事跟着朋友喝酒喝酒啊.喝了很多啊.晚上到旁边的酒店开了一个房间,到了酒店才十点! 感觉没啥事情干的,那就去网吧走走看把,看到是一个嘟嘟牛的,和上次是一样的.还是照常用MS170 ...

  10. kubernetes dashboard 安装时出现9090: getsockopt: connection refused错误

    转载于:https://blog.csdn.net/lucy06/article/details/79082302 安装kubernetes  dashboard时,出现错误: Error: 'dia ...