col.add(um);
}
rs.close();
pstmt.close();
}finally{
conn.close();
}
return col;
}
/**
* 获取与数据库的连接
* @return 数据库连接
*/
private Connection getConnection() throws Exception {
Class.forName("你用的数据库对应的JDBC驱动类");
return DriverManager.getConnection(
"连接数据库的URL", "用户名", "密码");
}
}
(3)写个客户端来测试看看,是否能满足功能要求,示例代码如下:
| public class Client { public static void main(String[] args) throws Exception{ UserManager userManager = new UserManager(); Collection
userManager.getUserByDepId("0101"); System.out.println(col); } } |
运行结果如下:
| [userId=user0001,name=张三1,depId=010101,sex=男 , userId=user0002,name=张三2,depId=010101,sex=男 , userId=user0003,name=张三3,depId=010102,sex=男 ] |
你还可以修改getUserByDepId的参数,试试传递不同的参数,然后再看看输出的值,看看是否正确的实现了要求的功能。
11.1.3 有何问题
上面的实现看起来很简单,功能也正确,但是蕴含一个较大的问题,那就是:当一次性访问的数据条数过多,而且每条描述的数据量又很大的话,那会消耗较多的内存。
前面也说了,对于用户表,事实上是有很多字段的,不仅仅是示例的那么几个,再加上不使用翻页,一次性访问的数据就可能会有很多条。如果一次性需要访问的数据较多的话,内存开销会比较大。
但是从客户使用角度来说,有很大的随机性,客户既可能访问每一条数据,也可能一条都不访问。也就是说,一次性访问很多条数据,消耗了大量内存,但是很可能是浪费掉了,客户根本就不会去访问那么多数据,对于每条数据,客户只需要看看姓名而已。
那么该怎么实现,才能既把多条用户数据的姓名显示出来,而又能节省内存空间,当然还要实现在客户想要看到更多数据的时候,能正确访问到数据呢?
---------------------------------------------------------------------------
私塾在线学习网原创内容 跟着cc学设计系列 之 研磨设计模式
研磨设计讨论群【252780326】
原创内容,转载请注明出处【http://sishuok.com/forum/blogPost/list/5261.html】
---------------------------------------------------------------------------