假如:对应数据库中某张表,建一个实体bean.
有一条SQL语句,获取这个表的全部内容,得到一个数据集.最后想把这个数据集中的数据进行处理,把每一行作为实体bean的一个实例然后加到List中.问题:从数据集取出一个数据,给实例的对应属性赋值.
实现这个,常用做法:obj.setA(ds.getString("columnName"));//利用列名和属性名对应
这种做法,个人感觉有些问题,因为属性A和columnName对应关系是程序员自己加上去的,在程序是找不到任何依据,即在程序没有任何的配置文件或者可以表明两者关系的数据结构. 隐隐约约感觉这样的程序是有断层的,加上写程序的人好象才是完整的,如果换个程序员,他可能就不知道A和columnName之间的关系,那维护性从何说起? 不知道是我杞人忧天了,还是确实存在问题,如果存在这样问题,应该怎样解决或者避免呢?
其实我自己也很模糊,不知道该怎么表述心中的疑惑,但还是请各位高手各抒己见,不吝赐教!
有一条SQL语句,获取这个表的全部内容,得到一个数据集.最后想把这个数据集中的数据进行处理,把每一行作为实体bean的一个实例然后加到List中.问题:从数据集取出一个数据,给实例的对应属性赋值.
实现这个,常用做法:obj.setA(ds.getString("columnName"));//利用列名和属性名对应
这种做法,个人感觉有些问题,因为属性A和columnName对应关系是程序员自己加上去的,在程序是找不到任何依据,即在程序没有任何的配置文件或者可以表明两者关系的数据结构. 隐隐约约感觉这样的程序是有断层的,加上写程序的人好象才是完整的,如果换个程序员,他可能就不知道A和columnName之间的关系,那维护性从何说起? 不知道是我杞人忧天了,还是确实存在问题,如果存在这样问题,应该怎样解决或者避免呢?
其实我自己也很模糊,不知道该怎么表述心中的疑惑,但还是请各位高手各抒己见,不吝赐教!
解决方案 »
- 在dos输入appletviewer以后,回车,为什么黑屏幕一闪就没了?怎么解决?
- 关于字符集和特殊符号输入问题,急!
- 关于扫雷游戏
- 急!有关存取数据的一个瓶颈问题....
- 求素数的问题,i,j初值一更改马上就无法显示任何东西。。
- 关于这个JAVA问题,急急急
- 如何在窗体已经建立之后向其中添加控件?
- 怎么设置按钮图标下的颜色?(类似word)
- 大家讨论一下这句代码的确切含义:output = new DataOutputStream(socket.getOutputStream())(附源程序)
- 输入任意M个正整数,要求输出N个最大值
- 小弟请教一个java线程的问题!!!!!!!!!!!!
- 简单的java源码(完成常见特定功能)一般到哪些网站找?
obj.setA(ds.getString("A"));
hehe
set方法命名应该要接上表中的字段名.
比如,如果想把实体bean中的数据显示在Web页面上,这时还需要一种人为的头脑中的映射关系,比如Web页面上的"姓名"字段就对应bean中的"name"字段,其实这种对应关系也是很清晰,毕竟是我们比较熟悉的单词,但是如果在某个我不熟知的行业,要显示某一个指标例如"丢包率",这时我们可能给它进行生硬的翻译为英文,即使已经有英汉对照,由于不熟悉,可能过一段时间自己也不知道"丢包率"对应的是哪个属性,这时候的维护可能就有些困难了,更不用说bean中有几十个自己不熟悉的又长又不知所以的属性名了.
总感觉这种需要人,才完整的程序总有些瑕疵,应该减少人的因素.
循环
变量1=columnName;
变量2=“set”+columnName;
然后用Class.getMethods得到所有method,匹配上名字的就 invoke
循环结束
大概是这样
谢谢您的回复.
您的方法可以很好的解决"可以利用命名规则来达到对应关系"的问题,但是如果象我上面说的问题怎么解决:
"比如,如果想把实体bean中的数据显示在Web页面上,这时还需要一种人为的头脑中的映射关系,比如Web页面上的"姓名"字段就对应bean中的"name"字段,其实这种对应关系也是很清晰,毕竟是我们比较熟悉的单词,但是如果在某个我不熟知的行业,要显示某一个指标例如"丢包率",这时我们可能给它进行生硬的翻译为英文,即使已经有英汉对照,由于不熟悉,可能过一段时间自己也不知道"丢包率"对应的是哪个属性,这时候的维护可能就有些困难了,更不用说bean中有几十个自己不熟悉的又长又不知所以的属性名了."此时是汉字和英文,要想在命名规则上找出路,好象是不行,不知道除了写配置文件或者写其他表明关系的文件之外还有什么方法.谢谢~~~~~