[Apache commons系列]DBUtils简介
。
DbUtils是一个小型的类库,这里通过具体实例来说明如何使用DbUtils。示例分为3个类:DbUtilsExample演示了如何使用DbUtils 类;QueryRunnerExample 演示了如何使用QueryRunner 、ResultSetHandler ;User 类为一个JavaBean,对应于数据库中的表格。示例采用MySQL为数据库,使用JDBC4.0驱动(最大的区别就是不需要写Class.forName().newInstance() )。sh)
* 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驱动
view plaincopy to clipboardprint?
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`USERNAME` varchar(30) NOT NULL,
`PASSWORDHASH` varchar(256),
PRIMARY KEY (`USERNAME`),
KEY `USERNAME` (`USERNAME`)
);
DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `USERNAME` varchar(30) NOT NULL, `PASSWORDHASH` varchar(256), PRIMARY KEY (`USERNAME`), KEY `USERNAME` (`USERNAME`) );
DbUtilsExample.java :
view plaincopy to clipboardprint?
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);
}
}
}
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(Stringa[] 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);
}
}
}
QueryRunnerExample.java :
view plaincopy to clipboardprint?
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);
}
}
}
[Apache commons系列]DBUtils简介-inkfish原创
原创
©著作权归作者所有:来自51CTO博客作者mb6444ed45406a4的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Apache Doris 聚合函数源码阅读与解析|源码解读系列
Apache Doris Active Contributor 隐形通过本文记录下对源码的理解,以方便新人快速上手源码开发。
Apache Doris 数据库 大数据 数据分析 数据仓库 -
Apache Commons DbUtils 快速上手
批判:1、操作过程复杂,代码操作一个模式,大量的重复。2、结果集难以处理,拿
apache jdbc string import user -
Apache Commons DbUtils使用手册
Apache Commons DbUtils使用手册作者:chszs,转载需注明。博客主页:程
Dbutils Commons DbUtils JDBC 结果集 封装 -
(转)Apache Commons工具集简介
工具集。由于Bean往往是有一堆get
apache jar System -
【转贴】Apache Commons工具集简介
导读: Apache Commons包含了很多开
工具 apache properties date hibernate -
Commons-dbutils框架
文章目录1. Commons-dbutils简介2.QueryRunner类使用讲解2.1.QueryRunner类的主要方法2.2.使用QueryRunner类
apache mysql java DBUtis Druid -
java工厂模式坏处
一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。设计模式的原则:针对借口编程工厂模式的作用: A.应用程序的设计中把对象的的创建集中在一个地方创建或者统一由某类来管理(spring)  
java工厂模式坏处 java 设计模式 简单工厂模式 工厂方法模式