DBUtils工具类

前面我们学习了JDBC连接相应的数据库,可以对数据进行一些增删改查的操作,但是仍然存在一些冗余。随着技术的进步,这些不能满足当前大数据时代的要求,需要更加方便简洁的方式来操作数据。这时候就引入DBUtils,这是Apache commons组件的一个成员:我们用的是commons-dbutils-1.6.jar。

【简介】

DBUtils是java编程中的数据库操作工具,封装了JDBC的操作,即JDBC的简化开发工具包。

三个核心功能类:

QueryRunner中提供对sql语句操作的API---update和query

ResultSetHandler接口,用于定义select操作后,怎样封装结果集。

DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法。

【-QueryRunner之update和query】

update(Connection conn, Stringsql, Object... params) ,用来完成表数据的增加、删除、更新操作。

query(Connection conn, Stringsql,ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作。 

【结果集的处理】

ResultSetHandler对结果集的处理。


[java]  view plain  copy
  1. <span style="font-family:'KaiTi_GB2312';font-size:18px;" deep="5">public class DBUtilsDemo {  
  2.     private static Connection conn = MyJDBCUtils.getConnection();  
  3.     private static QueryRunner qr=new QueryRunner();  
  4.     public static void main(String[] args) throws Exception   {  
  5.         update();   //进行更新  
  6.         query();  
  7.     }  
  8.     //利用DBUtils工具类中的类QueryRunner进行更新  
  9.     public static void update() throws Exception{  
  10.         QueryRunner qr=new QueryRunner();  
  11.         String sql="insert into sort(sname,sprice,sdesc) values(?,?,?)";//占位符  
  12.         Object []  params  ={ "lisi"12.12"张三添加数据库"};  
  13.         int row1 = qr.update(conn, sql,params);  
  14.         System.out.println(row1);  
  15.         MyJDBCUtils.close();  
  16.           
  17.         //不用DBUtils工具类更新  
  18.         /*String sql="INSERT INTO sort(sname,sprice,sdesc) VALUES(?,?,?)"; 
  19.         PreparedStatement prs = conn.prepareStatement(sql); 
  20.         prs.setObject(1, "zhangsan"); 
  21.         prs.setObject(2, "12345"); 
  22.         prs.setObject(3, "张三添加数据库"); 
  23.         int row = prs.executeUpdate(); 
  24.         System.out.println(row);*/  
  25.     }  
  26.   
  27.        //利用DBUtils工具类查询,对返回的结果集进行处理  
  28.     public static void query() throws SQLException{  
  29.         String sql="select * from sort where sid>?";  
  30.         Object [] params={3};  
  31.           
  32.         //第一种方法将结果集的第一行封装成数组  
  33.         Object[] obj = qr.query(conn, sql, new ArrayHandler(),params);  
  34.         //遍历数组  
  35.         for (Object object : obj) {  
  36.             System.out.print(object+"\t");  
  37.         }  
  38.           
  39.         //第二种方法将结果集的每一行封装成数组,然后添加到集合中  
  40.         List<Object[]> query = qr.query(conn, sql, new ArrayListHandler(), params);  
  41.         for (Object[] objects : query) {  
  42.             for (Object object : objects) {  
  43.                 System.out.print(object+"\t");  
  44.             }  
  45.             System.out.println();  
  46.         }  
  47.         //第三种方法将结果集的第一行封装成实体对象  
  48.         sort query2 = qr.query(conn, sql, new BeanHandler<sort>(sort.class), params);  
  49.         System.out.println(query2);  
  50.           
  51.         //第四种方法将结果集的每一行封装成实体对象,然后放在集合中  
  52.         List<sort> query3 = qr.query(conn, sql, new BeanListHandler<sort>(sort.class), params);  
  53.         for (sort sort : query3) {  
  54.             System.out.println(sort);  
  55.         }  
  56.           
  57.         //第五种将结果集的一列返回到集合中  
  58.         List<Object> query4 = qr.query(conn, sql, new ColumnListHandler<>("sname"), params);  
  59.         for (Object object : query4) {  
  60.             System.out.println(object);  
  61.         }  
  62.         //第六种,当结果集为单个行单个列是用ScalarHandler返回long型  
  63.         String sql1="select count(*) from sort where sid>'4' ";  
  64.         long query5 = qr.query(conn, sql1, new ScalarHandler<Long>());  
  65.         System.out.println(query5);  
  66.           
  67.         //第七种 将结果集第一行返回到map集合中  
  68.         Map<String, Object> map = qr.query(conn, sql, new MapHandler(), params);  
  69.         for (String key : map.keySet()) {  
  70.             System.out.print(key+" "+map.get(key));  
  71.         }  
  72.           
  73.         //第八种 将结果集的每一条放在map中,然后存在集合中  
  74.         List<Map<String, Object>> query6 = qr.query(conn, sql, new MapListHandler(), params);  
  75.         for (Map<String, Object> map2 : query6) {  
  76.             for (String key:map2.keySet()) {  
  77.                 System.out.print(key+" "+map2.get(key));  
  78.             }  
  79.             System.out.println();  
  80.         }  
  81.     }  
  82. }</span>  

【小结】

    自我感觉,DBUtils工具类在查询中更能体现它的方便,对数据库的查询直接可以根据需要定义,大大简化代码,提高效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值