论坛首页 Java企业应用论坛

『提问』Ibatis的组合查询的问题

浏览 5312 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-08-25  
软件环境:
坛子里好象用ibatis的人比较人呀。。呵呵,其实,这东东也是蛮不错的。
现在有个问题,不知道有没有人遇到过
我要在xml文件中动态设置表名,我用了$$这种方式,在单表查询的情况下是可以的,但如果是主子表查询,如何把表名动态赋值给子查询呢?
xml文件如下:
<typeAlias alias="A" type="A"/>
<typeAlias alias="B" type="B"/>
<resultMap id="RA" class="A">
<result property="id" column="PLUGIN_ID" javaType="java.lang.Long"/>
<result property="name" column="NAME" javaType="java.lang.String"/>
<result property="b" column="PLUGIN_ID" select="queryB"/>
</resultMap>
<resultMap id="RB" class="B">
<result property="id" column="ROLE_ID" javaType="java.lang.Long"/>
<result property="code" column="CODE" javaType="java.lang.String"/>
</resultMap>
<select id="queryA"
parameterClass="ParamPlugin"
resultMap="ResultPluginModel">
<![CDATA[
select *
from $tableName$
]]>
</select>
<select id="queryB"
parameterClass="int"
resultMap="B">
<![CDATA[
select *
from $tableName$ where PLUGIN_ID=#value#
]]>
</select>
我想,问题的关键可能就是parameterClass="int",如果是int,则#value#肯定没问题,但$tableName$就无法得到。但如果写成B,则<result property="b" column="PLUGIN_ID" select="queryB"/>的值如何带到#value#里面去?
配置文件:
 
错误提示信息:
 
你的分析:
   发表时间:2006-08-25  
 <select id="queryB"
parameterClass="int"
resultMap="B">
<![CDATA[
select *
from $tableName$ where PLUGIN_ID=#value#
]]>
</select> 

这种配置你如何调用?
0 请登录后投票
   发表时间:2006-08-25  
getSqlMapClientTemplate().queryForList("queryB",new Integer(1))
这样调本来是可以的。但有个问题:parameterClass="int",所以$tableName$参数无法拿到。。但如果改为了一个带tableName和value的object对象,则如何与&lt;result property="b" column="PLUGIN_ID" select="queryB"/&gt; 这段话关联起来呢?
0 请登录后投票
论坛首页 Java企业应用版

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