学科分类
目录
Java Web

BeanHandler、BeanListHandler和BeanMapHandler

BeanHandler、BeanListHandler和BeanMapHandler实现类是将结果集中的数据封装到对应的JavaBean实例中,这也是实际开发中最常用的结果集处理方法。在演示这三个类的使用之前,需要先创建一个JavaBean实例类User,具体实现方式如例1所示:

例1 User.java

 1  package cn.itcast.jdbc.example.domain;

 2  public class User {

 3    private int id;

 4    private String name;

 5    private String password;

 6    public int getId() {

 7      return id;

 8    }

 9    public void setId(int id) {

 10     this.id = id;

 11   }

 12   public String getName() {

 13     return name;

 14   }

 15   public void setName(String name) {

 16     this.name = name;

 17   }

 18   public String getPassword() {

 19     return password;

 20   }

 21   public void setPassword(String password) {

 22     this.password = password;

 23   }

 24 }

创建类ResultSetTest3,在类ResultSetTest3中写一个方法testBeanHandler(),具体代码如例2所示:

例2 ResultSetTest3.java

 1  package cn.itcast.jdbc.example.dao;

 2  import java.sql.SQLException;

 3  import org.apache.commons.dbutils.handlers.BeanHandler;

 4  import cn.itcast.jdbc.example.domain.User;

 5  public class ResultSetTest3 {

 6    public static void testBeanHandler() throws SQLException {

 7      BaseDao basedao=new BaseDao();

 8      String sql="select * from user where id=?";

 9      User user = 

 10       (User) basedao.query(sql,new BeanHandler(User.class),1);

 11     System.out.print("id为1的User对象的name值为:"+user.getName()); 

 12    }

 13    public static void main(String[] args) throws SQLException {

 14     testBeanHandler ();

 15   }

 16 }

运行类ResultSetTest3,执行结果如图1所示。

图1 运行结果

由输出结果可以看出,BeanHandler成功将id为1的数据存入到了实体对象user中。

接下来创建类ResultSetTest4,写一个方法testBeanListHandler()来演示BeanListHandler类对结果集的处理结果,具体如例3所示:

例3 ResultSetTest4.java

 1  package cn.itcast.jdbc.example.dao;

 2  import java.sql.SQLException;

 3  import java.util.ArrayList;

 4  import org.apache.commons.dbutils.handlers.BeanListHandler;

 5  import cn.itcast.jdbc.example.domain.User;

 6  public class ResultSetTest4 {  

 7    public static void testBeanListHandler() throws SQLException {

 8      BaseDao basedao = new BaseDao();

 9      String sql = "select * from user ";

 10     ArrayList<User> list = (ArrayList<User>) basedao.query(sql,

 11         new BeanListHandler(User.class));

 12     for (int i = 0; i < list.size(); i++) {

 13       System.out.println("第" + (i + 1) + "条数据的username值为:"

 14           + list.get(i).getName());

 15     }

 16   }

 17   public static void main(String[] args) throws SQLException {

 18     testBeanListHandler ();

 19   }

 20 }

运行类ResultSetTest4,执行结果如图2所示。

图2 运行结果

由输出结果可以看出,testBeanListHandler ()方法可以将每一行的数据都封装到user实例中,并存放到list中。接下来创建类ResultSetTest5,写一个方法testBeanMapHandler()来演示BeanMapHandler类对结果集的处理结果,具体如例4所示:

例4 ResultSetTest5.java

1  package cn.itcast.jdbc.example.dao;

 2  import java.sql.SQLException;

 3  import java.util.Map;

 4  import org.apache.commons.dbutils.handlers.BeanMapHandler;

 5  import cn.itcast.jdbc.example.domain.User;

 6  public class ResultSetTest5 {

 7    public static void testBeanMapHandler() throws SQLException {

 8      String sql = "select id, name, password from user";

 9      Map<Integer, User> map = (Map<Integer, User>) BaseDao.query(sql,

 10         new BeanMapHandler<Integer, User>(User.class, "id"));

 11     // zhangsan的id值为1

 12     User u = map.get(1);

 13     String uName = u.getName();

 14     String uPassword = u.getPassword();

 15     System.out.print("id为1的User对象的name值为:" + uName + ",

 16                   password值为:"+ uPassword);

 17   }

 18   public static void main(String[] args) throws SQLException {

 19     testBeanMapHandler();

 20   }

 21 }

运行类ResultSetTest5,执行结果如图3所示。

图3 运行结果

由输出结果可以看出,testBeanMapHandler()方法成功的将每一行的数据都封装到user实例中,并存放到Map中。

点击此处
隐藏目录