Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3355021
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类: Java

2010-02-19 15:24:03

    commons-dbutilsApache 组织提供的一个开源 JDBC 工具类库,对传统操作数据库的类进行二次封装,可以把结果集转化成List。
项目主页:
文档地址:
下载地址:

(1)org.apache.commons.dbutils
DbUtils  : 提供如关闭连接、装载 JDBC 驱动程序等常规工作的工具类
QueryRunner : 该类简单化了 SQL 查询,它与 ResultSetHandler 组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。
QueryLoader : 属性文件加载器,主要用于加载属性文件中的 SQL 到内存中。

(2)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

(3)org.apache.commons.dbutils.wrappers
SqlNullCheckedResultSet :该类是用来对sql语句执行完成之后的的数值进行null的替换。
StringTrimmedResultSet :去除ResultSet中中字段的左右空格。Trim()

二、例子
Java代码
  1. public class TestDbUtils {  
  2.   
  3.     /** 
  4.      * BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象 
  5.      */  
  6.     public static void getBeanListData() {  
  7.         Connection conn = getConnection();  
  8.         QueryRunner qr = new QueryRunner();  
  9.         try {  
  10.             ResultSetHandler rsh = new BeanHandler(TUser.class);  
  11.             TUser usr = (TUser) qr.query(conn,"SELECT id,username,gender FROM t_user WHERE id=10000",rsh);  
  12.             System.out.println(StringUtils.center("findById"50'*'));  
  13.             System.out.println("id=" + usr.getId() + " name=" + usr.getUsername() + " gender=" + usr.getGender());  
  14.               
  15.             List results = (List) qr.query(conn,"SELECT id,username,gender FROM t_user",  
  16.                     new BeanListHandler(TUser.class));  
  17.             System.out.println(StringUtils.center("findAll"50'*'));  
  18.             for (int i = 0; i < results.size(); i++) {  
  19.                 TUser user = (TUser) results.get(i);  
  20.                 System.out.println("id=" + user.getId() + "  name=" + user.getUsername() + "  gender=" + user.getGender());  
  21.             }  
  22.         } catch (SQLException e) {  
  23.             e.printStackTrace();  
  24.         } finally {  
  25.             DbUtils.closeQuietly(conn);  
  26.         }  
  27.     }  
  28.   
  29.     /** 
  30.      * MapListHandler :将ResultSet中所有的数据存成List。List中存放的是Map 
  31.      */  
  32.     public static void getMapListData() {  
  33.         Connection conn = getConnection();  
  34.         QueryRunner qr = new QueryRunner();  
  35.         try {  
  36.             List results = (List) qr.query(conn,"SELECT id,username,gender FROM t_user",  
  37.                     new MapListHandler());  
  38.             for (int i = 0; i < results.size(); i++) {  
  39.                 Map map = (Map) results.get(i);  
  40.                 System.out.println("id=" + map.get("id") + " name=" + map.get("username") + " gender=" + map.get("gender"));  
  41.             }  
  42.         } catch (SQLException e) {  
  43.             e.printStackTrace();  
  44.         } finally {  
  45.             DbUtils.closeQuietly(conn);  
  46.         }  
  47.     }  
  48.   
  49.     /** 
  50.      *新增和更新例子 
  51.      */  
  52.     public static void insertAndUpdateData(){  
  53.         Connection conn = getConnection();  
  54.         QueryRunner qr = new QueryRunner();  
  55.         try{  
  56.             //创建一个数组来存要insert的数据  
  57.             Object[] insertParams = {"John Doe""000000","男"};  
  58.             int inserts = qr.update(conn, "INSERT INTO t_user(username,password,gender) VALUES (?,?,?)",  
  59.                     insertParams );  
  60.             System.out.println("inserted " + inserts + " data");  
  61.               
  62.             Object[] updateParams = {"111111""John Doe"};  
  63.             int updates = qr.update(conn, "UPDATE t_user SET password=? WHERE username=?",  
  64.                                       updateParams );  
  65.             System.out.println("updated "+ updates + " data");  
  66.         }catch (SQLException e) {  
  67.             e.printStackTrace();  
  68.         } finally {  
  69.             DbUtils.closeQuietly(conn);  
  70.         }  
  71.     }  
  72.   
  73.     /** 
  74.      * Unlike some other classes in DbUtils, this class(SqlNullCheckedResultSet) is NOT thread-safe. 
  75.      */  
  76.     public static void findUseSqlNullCheckedResultSet(){  
  77.         Connection conn = getConnection();  
  78.         try{  
  79.             Statement stmt = conn.createStatement();  
  80.             ResultSet rs = stmt.executeQuery("SELECT id, username, gender FROM t_user");  
  81.             SqlNullCheckedResultSet wrapper = new SqlNullCheckedResultSet(rs);  
  82.             wrapper.setNullString("N/A"); // Set null string  
  83.             rs = ProxyFactory.instance().createResultSet(wrapper);  
  84.               
  85.             while(rs.next()){  
  86.                 System.out.println("id="+rs.getInt("id") + " username=" + rs.getString("username")  
  87.                         + " gender="+rs.getString("gender"));  
  88.             }  
  89.               
  90.             rs.close();  
  91.         }catch(Exception e){  
  92.             e.printStackTrace();  
  93.         }finally{  
  94.             DbUtils.closeQuietly(conn);  
  95.         }  
  96.     }  
  97.       
  98.     /****数据库连接*** */  
  99.     public static Connection getConnection() {  
  100.         Connection conn = null;  
  101.         String driver = "com.mysql.jdbc.Driver";  
  102.         String url = "jdbc:mysql://127.0.0.1/springapp?useUnicode=true&characterEncoding=gb2312";  
  103.   
  104.         DbUtils.loadDriver(driver);  
  105.   
  106.         try {  
  107.             conn = DriverManager.getConnection(url, "root""root");  
  108.         } catch (SQLException ex) {  
  109.             ex.printStackTrace();  
  110.         }  
  111.         return conn;  
  112.     }  
  113.       

阅读(1725) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~