经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
数据库操作之DBUtils
来源:cnblogs  作者:__千里之外、  时间:2018/10/16 9:40:00  对本文有异议

概述

DBUtils是Java编程中的数据库操作实用工具,小巧简单实用。

DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。

DBUtils三个核心功能介绍

  • QueryRunner中提供对sql语句操作的API
  • ResultSetHandler接口,用于定义select操作后,怎样封装结果集
  • DBUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法

QueryRunner核心类

  • QueryRunner(DataSourcr ds),提供数据源(连接池),DbUtils底层自动维护连接connection
  • update(String sql,Obj...params),执行更新数据
  • query(String sql,ResultSetHandler<T>rsh,Object...panrams),执行查询

ResultSetHandler结果集处理类

ArrayHandler:适合取1条记录,把结果集中的第一行数据转成对象数组。

ArrayListHandler:适合取多条记录,把结果集中的每一行数据都转成一个对象数组,再存放到List中。

 

BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中(把每条记录封装成对象,适合取一条记录)

BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。//重点

MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。//重点

MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List

ColumnListHandler:将结果集中某一列的数据存放到List中。

KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里(List<Map>),再把这些map再存到一个map里,其key为指定的列。

ScalarHandler:将结果集第一行的某一列放到某个对象中。//重点

  1. package com.oterman.DButils;
  2. import java.sql.SQLException;
  3. import java.util.List;
  4. import java.util.Map;
  5. import org.apache.commons.dbutils.QueryRunner;
  6. import org.apache.commons.dbutils.handlers.ArrayHandler;
  7. import org.apache.commons.dbutils.handlers.ArrayListHandler;
  8. import org.apache.commons.dbutils.handlers.BeanHandler;
  9. import org.apache.commons.dbutils.handlers.BeanListHandler;
  10. import org.apache.commons.dbutils.handlers.MapHandler;
  11. import org.apache.commons.dbutils.handlers.MapListHandler;
  12. import org.apache.commons.dbutils.handlers.ScalarHandler;
  13. import org.junit.Test;
  14. import com.mchange.v2.c3p0.ComboPooledDataSource;
  15. /**
  16. * 该程序介绍ResultSetHandler的各个实现类;
  17. * @author 大蘑菇
  18. *
  19. */
  20. public class RSHandlerDemo {
  21. //--7.ScalarHandler:将查询的结果的第一行的某一列放到一个对象中;精确定位到某个值;
  22. @Test
  23. public void query7() throws SQLException{
  24. QueryRunner runner=new QueryRunner(new ComboPooledDataSource());
  25. String name=(String)runner.query("select * from account",new ScalarHandler(2));
  26. System.out.println(name);
  27. }
  28. //--6.MapListHandler:将查询的结果的每一行存入到一个map中,键为列名,值为各列值;然后再将map存入list中;
  29. @Test
  30. public void query6() throws SQLException{
  31. QueryRunner runner=new QueryRunner(new ComboPooledDataSource());
  32. List<Map<String,Object>> map=runner.query("select * from account",new MapListHandler());
  33. System.out.println(map);
  34. }
  35. //--5.MapHandler:将查询的结果的第一行存入到一个map中,键为列名,值为各列值;
  36. @Test
  37. public void query5() throws SQLException{
  38. QueryRunner runner=new QueryRunner(new ComboPooledDataSource());
  39. Map<String,Object> map=runner.query("select * from account",new MapHandler());
  40. System.out.println(map);
  41. }
  42. //--4.BeanListHandler:将查询的结果的每一行封装到一个javabean对象中,然后再将这些对象存入list中;
  43. @Test
  44. public void query4() throws SQLException{
  45. QueryRunner runner=new QueryRunner(new ComboPooledDataSource());
  46. List<Account> list=runner.query("select * from account",new BeanListHandler<Account>(Account.class));
  47. System.out.println(list);
  48. }
  49. //--3.BeanHandler:将查询的结果的第一行封装到一份javabean对象中;
  50. @Test
  51. public void query3() throws SQLException{
  52. QueryRunner runner=new QueryRunner(new ComboPooledDataSource());
  53. Account account=runner.query("select * from account",new BeanHandler<Account>(Account.class));
  54. System.out.println(account);
  55. }
  56. //--2.ArrayListHandler:将查询的结果的每一行放到一个数组中,然后再将数组放到集合中;
  57. @Test
  58. public void query2() throws SQLException{
  59. QueryRunner runner=new QueryRunner(new ComboPooledDataSource());
  60. List<Object[]> list=runner.query("select * from account",new ArrayListHandler());
  61. System.out.println(list);
  62. }
  63. //--1.ArrayHandler:将查询的结果的第一行放到一个数组中
  64. @Test
  65. public void query1() throws SQLException{
  66. QueryRunner runner=new QueryRunner(new ComboPooledDataSource());
  67. Object[] array=runner.query("select * from account",new ArrayHandler());
  68. System.out.println(array);
  69. }
  70. }

2018-10-15

 

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号