论坛首页 入门技术论坛

iBatis中select的结果可否不指定具体的class存放记录,而使用Map

浏览 5619 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-05-09  
请问iBatis在处理查询结果时,能否像commons-dbutils里面的ResultSetHandler rsh = new MapListHandler()一样,返回的查询结果中, 每条记录是根据select的列生成的一个Map,而不是要预先定义一个class A,然后将每条记录放到一个A的实例中。
   发表时间:2007-05-09  
刚才又看了一下iBatis的文档,将查询结果直接映射为XML倒也可以满足我的需求,不过更希望能是Map型的。
还有,看到iBatis的文档介绍xmlResultName:
<select id="getPerson" parameterClass="int" resultClass="xml" xmlResultName="person">
    SELECT PER_ID as id, PER_FIRST_NAME as firstName, PER_LAST_NAME as lastName,
                 PER_BIRTH_DATE as birthDate, PER_WEIGHT_KG as weightInKilograms,
                 PER_HEIGHT_M as heightInMeters
       FROM PERSON
       WHERE PER_ID = #value#
</select>

上面的查询结果将产生一个XML document,结构如下:
<person>
  <id>1</id>
  <firstName>Clinton</firstName>
  <lastName>Begin</lastName>
  <birthDate>1900-01-01</birthDate>
  <weightInKilograms>89</weightInKilograms>
  <heightInMeters>1.77</heightInMeters>
</person>
但在java中如何写才能得到这个结构却没说,希望知道的人能讲讲,谢谢。
0 请登录后投票
   发表时间:2007-05-09  
想不出把两维表放进一维表中的方式?
0 请登录后投票
   发表时间:2007-05-09  
抛出异常的爱 写道
想不出把两维表放进一维表中的方式?


什么意思??

在我的系统里,功能模块并不是程序员预先做好的,有的可能是用户自己配置生成,比如输入一条可执行的sql语句,以此作为新的模块的查询语句。这种时候我想查询结果使用map的形式比较好一点。
0 请登录后投票
   发表时间:2007-05-09  
select a,b,c from tab_d;
引用

a   b   c
1   2   3
4   5   6

map :
引用

a,1
b,2
c,3
a,4
b,5
c,6
0 请登录后投票
   发表时间:2007-05-09  
<select id="ttt" parameterClass="java.util.HashMap">
0 请登录后投票
   发表时间:2007-05-09  
抛出异常的爱 写道
select a,b,c from tab_d;
引用

a   b   c
1   2   3
4   5   6

map :
引用

a,1
b,2
c,3
a,4
b,5
c,6


你完全误会我的意思了。这个我当然知道,我是想问iBatis的查询能不能不依赖于特定的Bean(必须指定resultClass之类的),而直接将结果转换为map型的。
0 请登录后投票
   发表时间:2007-05-09  
ddandyy 写道
<select id="ttt" parameterClass="java.util.HashMap">



改成<select id="ttt" resultClass="java.util.HashMap">就可以了,非常感谢。
0 请登录后投票
   发表时间:2007-05-09  


copy上来的时候顺手了  没注意
0 请登录后投票
   发表时间:2007-05-10  
看了以后,有一拳打空的感觉.MS是哪位曾经描述过这个感觉来着...
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics