[Apache commons系列]DBUtils简介-3.示例代码

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

  inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish )。

  DbUtils是一个小型的类库,这里通过具体实例来说明如何使用DbUtils。示例分为3个类:DbUtilsExample演示了如何使用DbUtils 类;QueryRunnerExample 演示了如何使用QueryRunnerResultSetHandlerUser 类为一个JavaBean,对应于数据库中的表格。示例采用MySQL为数据库,使用JDBC4.0驱动(最大的区别就是不需要写Class.forName().newInstance() )。(来源:http://blog.csdn.net/inkfish)

依赖包: (来源:http://blog.csdn.net/inkfish)

  • commons-dbcp-1.2.2.jar:提供数据库连接池
  • commons-dbutils-1.3.jar:DbUtils包
  • commons-lang-2.4.jar:提供常用的工具方法
  • commons-pool-1.5.3.jar:提供DBCP对象池化机制
  • mysql-connector-java-5.1.10-bin.jar:MySQL JDBC4.0驱动

建表语句: (来源:http://blog.csdn.net/inkfish)

DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `USERNAME` varchar(30) NOT NULL, `PASSWORDHASH` varchar(256), PRIMARY KEY (`USERNAME`), KEY `USERNAME` (`USERNAME`) );

DbUtilsExample.java

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.apache.commons.dbutils.DbUtils; public class DbUtilsExample { public static void main(String[] args) { String url = "jdbc:mysql://127.0.0.1:3306/test"; String user = "test"; String password = "test"; Connection conn = null; Statement stmt = null; ResultSet rs = null; try { conn = DriverManager.getConnection(url, user, password); stmt = conn.createStatement(); stmt .executeUpdate("INSERT INTO user (USERNAME, PASSWORDHASH) values ('testUser', '123456')"); DbUtils.closeQuietly(stmt); DbUtils.commitAndCloseQuietly(conn); } catch (SQLException ex) { DbUtils.printStackTrace(ex); DbUtils.rollbackAndCloseQuietly(conn); } PreparedStatement psmt = null; try { conn = DriverManager.getConnection(url, user, password); psmt = conn.prepareStatement("SELECT USERNAME, PASSWORDHASH FROM user"); rs = psmt.executeQuery(); while (rs.next()) { System.out.println(rs.getString(1) + "/t" + rs.getString(2)); } } catch (SQLException ex) { DbUtils.printStackTrace(ex); } finally { DbUtils.closeQuietly(conn, psmt, rs); } try { conn = DriverManager.getConnection(url, user, password); stmt = conn.createStatement(); stmt.executeUpdate("DELETE FROM user WHERE USERNAME='testUser'"); DbUtils.closeQuietly(stmt); } catch (SQLException ex) { DbUtils.printStackTrace(ex); } finally { DbUtils.printWarnings(conn); DbUtils.closeQuietly(conn); } } } (来源:http://blog.csdn.net/inkfish)

QueryRunnerExample.java (来源:http://blog.csdn.net/inkfish)

import static java.lang.System.out; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Arrays; import java.util.List; import java.util.Map; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; import org.apache.commons.dbutils.DbUtils; 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.ColumnListHandler; import org.apache.commons.dbutils.handlers.KeyedHandler; import org.apache.commons.dbutils.handlers.MapHandler; import org.apache.commons.dbutils.handlers.MapListHandler; import org.apache.commons.dbutils.handlers.ScalarHandler; import org.apache.commons.lang.StringUtils; public class QueryRunnerExample { public static void main(String[] args) throws SQLException { QueryRunnerExample example = new QueryRunnerExample(); example.batch(); example.fillStatement(); example.query(); example.update(); example.closeDataSource(); } private DataSource dataSource = null; private QueryRunner runner = null; public QueryRunnerExample() { initDataSource(); runner = new QueryRunner(dataSource); } private void batch() { String sql = "INSERT INTO user (USERNAME, PASSWORDHASH) values (?, ?)"; try { out.println("/n" + StringUtils.center("Test QueryRunner batch", 80, '*')); int[] result = runner.batch(sql, new Object[][] { { "user1", "pwd1" }, { "user2", "pwd2" }, { "user3", "pwd3" }, { "user4", "pwd4" } }); out.printf("运行结果:%s/n", Arrays.toString(result)); } catch (SQLException ex) { DbUtils.printStackTrace(ex); } } private void closeDataSource() throws SQLException { ((BasicDataSource) dataSource).close(); } private void fillStatement() throws SQLException { String sql = "INSERT INTO user (USERNAME, PASSWORDHASH) VALUES (?, ?)"; Connection conn = null; try { out.println("/n" + StringUtils.center("Test QueryRunner fillStatement", 80, '*')); conn = dataSource.getConnection(); PreparedStatement psmt = conn.prepareStatement(sql); runner.fillStatementWithBean(psmt, new User("testUser5", "pwd5"), "userName", "passwordHash"); out.println(psmt.executeUpdate()); } catch (SQLException ex) { DbUtils.printStackTrace(ex); } finally { DbUtils.commitAndCloseQuietly(conn); } } private DataSource initDataSource() { if (dataSource == null) { BasicDataSource basicDs = new BasicDataSource(); basicDs.setUrl("jdbc:mysql://127.0.0.1:3306/test"); basicDs.setUsername("test"); basicDs.setPassword("test"); this.dataSource = basicDs; } return dataSource; } private void query() throws SQLException { out.println("/n" + StringUtils.center("Test QueryRunner query", 80, '*')); String sql = "SELECT * FROM user WHERE USERNAME LIKE ?"; out.println("1.Test QueryRunner query, ArrayHandler"); //把ResultSet第一行包装成Object[] Object[] r1 = runner.query(sql, new ArrayHandler(), "user%"); out.println(" " + Arrays.deepToString(r1)); out.println("2.Test QueryRunner query, ArrayListHandler"); //把ResultSet包装成List<Object[]> List<Object[]> r2 = runner.query(sql, new ArrayListHandler(), "user%"); out.println(" " + Arrays.deepToString(r2.toArray())); out.println("3.Test QueryRunner query, BeanHandler"); //把ResultSet第一行包装成一个JavaBean User r3 = runner.query(sql, new BeanHandler<User>(User.class), "user%"); out.println(" " + r3.toString()); out.println("4.Test QueryRunner query, BeanListHandler"); //把ResultSet第一行包装成一个List<JavaBean>; List<User> r4 = runner.query(sql, new BeanListHandler<User>(User.class), "user%"); out.println(" " + Arrays.deepToString(r4.toArray())); out.println("5.Test query, ColumnListHandler"); //抽取ResultSet指定的列,以List<Object>对象的形式返回,默认第一列 List<Object> r5 = runner.query(sql, new ColumnListHandler(2), "user%"); out.println(" " + Arrays.deepToString(r5.toArray())); out.println("6.Test QueryRunner query, KeyedHandler"); //包装ResultSet,以Map<Object,Map<String,Object>>对象形式返回,第一个Object是指定的列值,第二个Map中String是列名且对大小写不敏感 Map<Object, Map<String, Object>> r6 = runner.query(sql, new KeyedHandler(2), "user%"); out.println(" " + r6.toString()); out.println("7.Test QueryRunner query, MapHandler"); //把ResultSet第一行包装成Map<String, Object>,key对大小写不敏感 Map<String, Object> r7 = runner.query(sql, new MapHandler(), "user%"); out.println(" " + r7.toString()); out.println("8.Test QueryRunner query, MapListHandler"); //把ResultSet包装成List<Map<String,Object>>>,Map的key对大小写不敏感 List<Map<String, Object>> r8 = runner.query(sql, new MapListHandler(), "user%"); out.println(" " + r8.toString()); out.println("9.Test QueryRunner query, ScalarHandler"); //抽取ResultSet第一行指定列,以Object对象形式返回 Object r9 = runner.query(sql, new ScalarHandler("passwordhash"), "user%"); out.println(" " + r9.toString()); } private void update() { String sql = "DELETE FROM user WHERE PASSWORDHASH LIKE ?"; try { out.println("/n" + StringUtils.center("Test QueryRunner update", 80, '*')); out.println(runner.update(sql, "pwd%")); } catch (SQLException ex) { DbUtils.printStackTrace(ex); } } } (来源:http://blog.csdn.net/inkfish)

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
10月前
|
Java 应用服务中间件 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
145 2
简介Nginx,Tomcat和 Apache
|
Apache
java.lang.NoClassDefFoundError: org/apache/commons/io/output/UnsynchronizedByteArrayOutputStream
java.lang.NoClassDefFoundError: org/apache/commons/io/output/UnsynchronizedByteArrayOutputStream
812 0
|
7月前
|
消息中间件 Java Kafka
【Azure 事件中心】开启 Apache Flink 制造者 Producer 示例代码中的日志输出 (连接 Azure Event Hub Kafka 终结点)
【Azure 事件中心】开启 Apache Flink 制造者 Producer 示例代码中的日志输出 (连接 Azure Event Hub Kafka 终结点)
|
9月前
|
Java 数据库连接 Apache
深入理解Apache Commons Pool2池化技术
深入理解Apache Commons Pool2池化技术
|
10月前
|
算法 Java Apache
Apache Commons
Apache Commons是一个开源项目,提供了一系列的工具和库,用于简化Java开发中的常见任务。
88 1
|
10月前
|
消息中间件 JSON Kafka
实战 | Apache Hudi回调功能简介及使用示例
实战 | Apache Hudi回调功能简介及使用示例
63 0
|
10月前
|
数据挖掘 关系型数据库 MySQL
下一代实时数据库:Apache Doris 【一】简介
下一代实时数据库:Apache Doris 【一】简介
209 0
下一代实时数据库:Apache Doris 【一】简介
|
10月前
|
SQL 分布式计算 数据处理
Apache Spark简介与历史发展
Apache Spark简介与历史发展
|
开发框架 负载均衡 Dubbo
带你读《Apache Dubbo微服务开发从入门到精通》—— 一、 Dubbo简介
带你读《Apache Dubbo微服务开发从入门到精通》—— 一、 Dubbo简介
968 16
带你读《Apache Dubbo微服务开发从入门到精通》—— 一、 Dubbo简介
|
10月前
|
SQL 分布式计算 数据处理
[AIGC] Apache Spark 简介
[AIGC] Apache Spark 简介

推荐镜像

更多