bestjoe 发表于 2016-12-30 09:28:48

Apache dbutils 用法

学习java免不了和数据库打交道。下面我介绍下apache的一个类库,很好用的,没那么多的get和set了,
因为我们知道使用javabean来对数据库中的字段进行封装保存,取出免不了get,设置又要set。而今天这个类库就不用,
他就是 commons-dbutils-1.1.jar,也不知道大家有没有用过的,心得大家一块分享下。
首先我们先看一个我们常规的得到查询数据库所得到的ResultSet。
1、表:person:字段:username,id,age .要查id为1 的用户信息, 用javabean封装,PersonVo

   1. publicPersonVo getInfo(int id) throws Exception {   
   2.         PersonVo pv = new PersonVo();   
   3.         String sql = "SELECT * FROM person WHERE id = " + id;   
   4.         Connection connection = super.getConnection();   
   5.         Statement statement = connection.createStatement();   
   6.         ResultSet rs = statement.executeQuery(sql);   
   7.         while (rs.next()) {   
   8.         pv.setId(rs.getInt(1));   
   9.         pv.setUsername(rs.getString(2));   
10.         pv.setAge(rs.getInt(3));   
11. }

publicPersonVo getInfo(int id) throws Exception {
      PersonVo pv = new PersonVo();
      String sql = "SELECT * FROM person WHERE id = " + id;
      Connection connection = super.getConnection();
      Statement statement = connection.createStatement();
      ResultSet rs = statement.executeQuery(sql);
      while (rs.next()) {
      pv.setId(rs.getInt(1));
      pv.setUsername(rs.getString(2));
      pv.setAge(rs.getInt(3));
}


ok,我们得到了。
下面开始介绍dbutils.jar
今天我们主要使用org.apache.commons.dbutils.handler下面的类
主要的类有: ArrayHandler,ArrayListHandler,BeanHandler,BeanListHandler,MapHandler,MapListHandler
1.同样是要得到一条结果,那我们就可以用ArrayHandler或BeanHandler或MapHandler.
下面看方法


   1. public PersonVo getInfo(int id) throws Exception {   
   2.         QueryRunner queryRunner = new QueryRunner();   
   3.         String sql = "select * from person where id = " + id;   
   4.         return(PersonVo)queryRunner.query(getConnection(), sql,new BeanHandler(PersonVo.class));   
   5. }

public PersonVo getInfo(int id) throws Exception {
      QueryRunner queryRunner = new QueryRunner();
      String sql = "select * from person where id = " + id;
      return(PersonVo)queryRunner.query(getConnection(), sql,new BeanHandler(PersonVo.class));


QueryRunner我个人觉得和我们以前用过的Statement差不多。
他有一个方法query(java.sql.Connection conn, java.lang.String sql, ResultSetHandler rsh) ,其他的大家可以下载下来
自己试着用下。
getConnection() 是拿到一个和数据库的Connection。
这样我们在前台,就直接可以


   1. PersonVo pv = new Test().getInfo(1);   
   2. System.out.println(pv.getUsername());

PersonVo pv = new Test().getInfo(1);
System.out.println(pv.getUsername());


如果结果有一条以上,就要用BeanListHandler,MapListHandler.
如:


   1. public List<PersonVo> getRegist3() throws Exception {   
   2.         QueryRunner queryRunner = new QueryRunner();   
   3.         String sql = "select * from person";   
   4.         return(List)queryRunner.query(getConnection(), sql,new BeanListHandler(PersonVo.class));   
   5. }

public List<PersonVo> getRegist3() throws Exception {
      QueryRunner queryRunner = new QueryRunner();
      String sql = "select * from person";
      return(List)queryRunner.query(getConnection(), sql,new BeanListHandler(PersonVo.class));
}



---------------
ps:MapHandler
3.


   1. public Map getRegist() throws Exception {   
   2.               QueryRunner queryRunner = new QueryRunner();   
   3.               String sql = "select * from person where id = 2";   
   4.               return (Map) queryRunner.query(getConnection(), sql,new MapHandler());   
   5. }

public Map getRegist() throws Exception {
                QueryRunner queryRunner = new QueryRunner();
                String sql = "select * from person where id = 2";
                return (Map) queryRunner.query(getConnection(), sql,new MapHandler());
}


MapListHandler
4.


   1. public List<Map> getRegist4() throws Exception {   
   2.               QueryRunner queryRunner = new QueryRunner();   
   3.               String sql = "select * from person";   
   4.               return(List)queryRunner.query(getConnection(), sql,new MapListHandler());   
   5. }
页: [1]
查看完整版本: Apache dbutils 用法