设为首页 收藏本站
查看: 526|回复: 0

[经验分享] [Apache commons系列]DBUtils简介-inkfish原创

[复制链接]

尚未签到

发表于 2017-1-5 09:16:48 | 显示全部楼层 |阅读模式
[Apache commons系列]DBUtils简介
 来源(http://blog.csdn.net/inkfish )。
  DbUtils是一个小型的类库,这里通过具体实例来说明如何使用DbUtils。示例分为3个类:DbUtilsExample演示了如何使用DbUtils 类;QueryRunnerExample 演示了如何使用QueryRunner 、ResultSetHandler ;User 类为一个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)
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 : (来源:http://blog.csdn.net/inkfish)
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);  
}  
}  
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-324059-1-1.html 上篇帖子: Apache Harmony M1开始提供下载 下篇帖子: org.apache.commons.logging的用法(下)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表