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

本文介绍了一种从数据库查询数据并将其封装成面向对象的方式,利用ArrayList替代ResultSet进行数据存储,以实现更高效的资源管理和面向对象编程实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//? 为什么要返回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= newObject[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);

                }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值