您的位置:首页 > 数据库

数据库的数据取得后的二次封装

2013-06-30 14:58 190 查看
//? 为什么要返回ArrayList ,而不是我们想到ResultSet

//1. ArrayList 中封装 User对象,更加符合面向对象的编程方式  OOP    

//2.我们通过 Resulst->User对象->ArrayList这样ArrayList和
Resultset没有关系
,就可以及时关闭数据库资源.

 

下面为二次封装的例子:

UserService中的分页函数————进一步进行二次封装,把散开的单纯Object,整理成为User对象:

 

//二次封装把ArrayList(object)->User对象 -> ArrayList(集合)(User)

           ArrayListal=SQLHelper.executeQueryAL(sql, null);

           try {

                for(inti=0;i<al.size();i++){

                     Object[]obj=(Object[]) al.get(i);

                     //User对象如果放在外,al最终只有一个对象,而且是最后赋值的那个

                     //在内,每次都创立一个新的加入ArrayList中

                    

                     //hibernate中有自动的方法进行二次封装

                     Useruser=new User();

                     user.setId((Integer)obj[0]);

                     user.setName((String)obj[1]);

                     user.setEmail((String)obj[2]);

                     user.setGrade((Integer)obj[3]);

                     user.setPwd((String)obj[4]);

                     //千万别忘记 u-> ArrayList

                     alUser.add(user);

                }

           }catch (Exception e) {

                // TODO: handle exception

                e.printStackTrace();

           }

           return alUser;

 

因为在executeQueryAL中,返回的ArrayList包含的是普通的object

                ResultSetMetaDatarsmd = rs.getMetaData();

                //得到查询语句有几列(几项)

                intnumberOfColumns=rsmd.getColumnCount();

 

                while (rs.next()) {

                     Object[] ob=
new
Object[numberOfColumns];

                     for(inti=1;i<=numberOfColumns;i++){

                     //此处i不能为0,因为后面getObject(i+1),而上面i<=numberOfColumns

                     //这样i+1就超过rs的范围了,报错                        

                           ob[i-1]=rs.getObject(i);

                     }

                     al.add(ob);

                }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java Web 数据库
相关文章推荐