定义接口,便于功能扩展 重要编程思想A:.当程序不确实数据的处理方式时,或数据的处理方式需要用户指定时,则程序设计时,可提供接口供用户或其它程序处理。让使用者实现此接口并同时完善处理方式。(接口的多实现特性,导致可以设计多种处理方式) interface ResultSetHandler{ public Object handler(ResultSet rs); } class BeanHandler implements ResultSetHandler{3)通过返回的结果类型做相应处理 private Class clazz; public BeanHandler(Class clazz){ this.clazz=clazz; } @Override public Object handler(ResultSet rs) { // TODO Auto-generated method stub try { if(!rs.next()){ return null; } Object bean=clazz.newInstance(); ResultSetMetaData mate=rs.getMetaData(); int count=mate.getColumnCount(); for(int i=0;i<count;i++){ String name=mate.getColumnName(i+1); Object value=rs.getObject(name); //反射 Field f=bean.getClass().getDeclaredField(name); f.setAccessible(true); f.set(bean, value); System.out.println(f.get(bean)); } return bean; } catch (Exception e) { throw new RuntimeException(e); } } } 第二种,返回list类型class BeanListHandler implements ResultSetHandler{ private Class clazz; public BeanListHandler(Class clazz){ this.clazz=clazz; } @Override public Object handler(ResultSet rs) { List list=new ArrayList(); try { while(rs.next()){ Object bean=clazz.newInstance(); ResultSetMetaData mata=rs.getMetaData(); int count=mata.getColumnCount(); for(int i=0;i<count;i++){ String name=mata.getColumnName(i+1); Object value=rs.getObject(name); Field f=bean.getClass().getDeclaredField(name); f.setAccessible(true); f.set(bean, value); System.out.println(f.get(bean)); } list.add(bean); } } catch (Exception e) { e.printStackTrace(); } System.out.println(list); return list; } } 2、 dao层中代码( 重要编程思想B:.同样当处理的数据不确定要存储到哪里(某个bean中,或某个类中),则可以让调用者通过参数形式传递过来。) 返回bean public Account find(int id) throws SQLException{ String sql="select *from account where id=?"; Object params[]={id}; return (Account) JdbcUtils.query(sql, params, new BeanHandler(Account.class)); } 返回list public List findAll() throws SQLException{ String sql="select *from account"; Object params[]={}; return (List) JdbcUtils.query(sql, params, new BeanListHandler(Account.class)); } |
接口及方式实现重要编程思想 (dbutils中BeanHandler)
最新推荐文章于 2024-12-04 23:12:52 发布
本文探讨了在软件开发中如何通过定义灵活的接口来扩展功能,并介绍了在DAO层使用不同处理方式的具体实现方法,包括返回单一对象和列表。
&spm=1001.2101.3001.5002&articleId=80573965&d=1&t=3&u=b272116d969e403aabbf12e6b7518363)
2万+

被折叠的 条评论
为什么被折叠?



