我说说apache对数据库结果集的封装

  1.   学习java免不了和数据库打交道。下面我介绍下apache的一个类库,很好用的,没那么多的get和set了,
  2. 因为我们知道使用javabean来对数据库中的字段进行封装保存,取出免不了get,设置又要set。而今天这个类库就不用,
  3. 他就是 commons-dbutils-1.1.jar,也不知道大家有没有用过的,心得大家一块分享下。
  4. 首先我们先看一个我们常规的得到查询数据库所得到的ResultSet。
  5. 1、表:person:字段:username,id,age .要查id为1 的用户信息, 用javabean封装,PersonVo
  6. public  PersonVo getInfo(int id) throws Exception {
  7.     PersonVo pv = new PersonVo();
  8.     String sql = "SELECT * FROM person WHERE id = " + id;
  9.     Connection connection = super.getConnection();
  10.     Statement statement = connection.createStatement();
  11.     ResultSet rs = statement.executeQuery(sql);
  12.     while (rs.next()) {
  13.     pv.setId(rs.getInt(1));
  14.     pv.setUsername(rs.getString(2));
  15.     pv.setAge(rs.getInt(3));
  16. }
  17. ok,我们得到了。
  18. 下面开始介绍dbutils.jar
  19. 今天我们主要使用org.apache.commons.dbutils.handler下面的类
  20. 主要的类有: ArrayHandler,ArrayListHandler,BeanHandler,BeanListHandler,MapHandler,MapListHandler
  21. 1.同样是要得到一条结果,那我们就可以用ArrayHandler或BeanHandler或MapHandler.
  22. 下面看方法
  23. public PersonVo getInfo(int id) throws Exception {
  24.     QueryRunner queryRunner = new QueryRunner();
  25.     String sql = "select * from person where id = " + id;
  26.     return  (PersonVo)queryRunner.query(getConnection(), sql,new BeanHandler(PersonVo.class));
  27.     }
  28. QueryRunner我个人觉得和我们以前用过的Statement差不多。
  29. 他有一个方法query(java.sql.Connection conn, java.lang.String sql, ResultSetHandler rsh) ,其他的大家可以下载下来
  30. 自己试着用下。
  31. getConnection() 是拿到一个和数据库的Connection。
  32. 这样我们在前台,就直接可以 
  33. PersonVo pv = new Test().getInfo(1);
  34. System.out.println(pv.getUsername());
  35. 如果结果有一条以上,就要用BeanListHandler,MapListHandler.
  36. 如:
  37. public List getRegist3() throws Exception {
  38.     QueryRunner queryRunner = new QueryRunner();
  39.     String sql = "select * from person";
  40.     return  (List)queryRunner.query(getConnection(), sql,new BeanListHandler(PersonVo.class));
  41. }
  42. ---------------
  43. ps:MapHandler
  44. 3.public Map getRegist() throws Exception {
  45.         QueryRunner queryRunner = new QueryRunner();
  46.         String sql = "select * from person where id = 2";
  47.         return (Map) queryRunner.query(getConnection(), sql,new MapHandler());
  48.     }
  49. MapListHandler
  50. 4.public List getRegist4() throws Exception {
  51.         QueryRunner queryRunner = new QueryRunner();
  52.         String sql = "select * from person";
  53.         return  (List)queryRunner.query(getConnection(), sql,new MapListHandler());
  54.     }
  55. 大家可以使用一下,如果数据库中的字段有上千个,看看省去了多少代码。。。。。hoho。。。不对请拍砖。

你可能感兴趣的:(Java基础)