posts - 28,  comments - 15,  trackbacks - 0

上一节:http://www.blogjava.net/zhanglongsr/articles/190616.html

1.1. ResultSetDynaClass

       有些时候,我们会遇到需要一个 JavaBean 来持久化多个数据库表的情况,像上面提到的报表的例子。假如 Ta  Tb Tc 三个表分别代表 A B C3 个报表,现在假设,如果要减少开发人员的代码编写,而且表结构有着一定的相似性,那么我们会如何做?就目前来看,最简单的莫过于减少表的持久化工作,可以让一个 JavaBean 来维护多个表的持久化。

       我们可以使用 DynaBean 构建动态的数据库领域模型,但现在我们面临的一个问题是我们如何获得有效的数据库表的相关字段来构建这个 DynaBean

       ResultSetDynaClass 封装了 ResultSet ,它能够帮助我们从一 ResultSet 中取出对应的一组属性。

       另外, ResultSetDynaClass 能根据执行的 sql 结果集自动为用户返回一组 DynaBean ,从而减少用户创建 DynaBean 的工作量。

      

示例代码:

         Connection conn = ...;

        Statement stmt = conn.createStatement();

        ResultSet rs = stmt.executeQuery

      ("select account_id, name from customers");

        Iterator rows = (new ResultSetDynaClass(rs)).iterator();

        while (rows.hasNext()) {

      DynaBean row = (DynaBean) rows.next();

      System.out.println("Account number is " +

                         row.get("account_id") +

                         " and name is " + row.get("name"));

        }

        rs.close();

1.2. LazyValidatorActionForm  

从某种意义上来说, LazyValidatorActionForm 也是一种 DynaBean ,因为 LazyValidatorActionForm 继承于 LazyValidatorForm LazyValidatorForm 实现了 DynaBean 接口。但是从开发的层次角度考虑,我还是单独把它提出来。

       API 中可以观察到, LazyValidatorActionForm 继承于 LazyValidatorForm ,撇开 LazyValidatorActionForm validate() 方法, LazyValidatorActionForm 并没有提供其他方法,那么 LazyValidatorActionForm 的动态特性完全是从 LazyValidatorForm 继承而来。

       我们现在虚拟一个需求环境,假设有一个学生成绩录入页面,课程构成了页面的列,学生的各科成绩构成了页面的行,从而我们知道,页面表达学生成绩的文本框应该是动态生成的,当然表达学生成绩的文本框的名称与学生和课程有关,但现在我们忽略这一点,只是单纯的从页面的 Form 的解析考虑。

       页面控件的解析可用代码表示如下:

 

 

代码示例:

       // 假设通过逻辑处理,得到页面一个学生的一门课程的成绩控件名称

       String control1 = “score_student1_course1”;

       String control2 = “score_student1_course2”;

      

       String value1 = “85”;

       String value2 = “86”;

 

       LazyValidatorActionForm lazyForm = new LazyValidatorForm();

       lazyForm.set(control1, value1);

       lazyForm.set(control2,value2);

 

       // 如果页面提交后,你可以这样获取

       Map map = lazyForm. getMap();

      

       // 然后你就可以对这个 map 进行处理,这要看你的处理逻辑喽!

 

   

 

                                                                                    作者:张兴龙

posted on 2008-06-17 15:36 zhangxl 阅读(190) 评论(0)  编辑  收藏 所属分类: common

只有注册用户登录后才能发表评论。


网站导航:
 
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(1)

随笔分类(17)

随笔档案(28)

文章分类(30)

文章档案(30)

相册

收藏夹(2)

hibernate

java基础

mysql

xml

关注

压力测试

算法

最新随笔

搜索

  •  

积分与排名

  • 积分 - 95630
  • 排名 - 603

最新评论

阅读排行榜

评论排行榜