浏览 5312 次
锁定老帖子 主题:『提问』Ibatis的组合查询的问题
精华帖 (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#里面去? 配置文件: 错误提示信息: 你的分析: 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-08-25
<select id="queryB" parameterClass="int" resultMap="B"> <![CDATA[ select * from $tableName$ where PLUGIN_ID=#value# ]]> </select> 这种配置你如何调用? |
|
返回顶楼 | |
发表时间:2006-08-25
getSqlMapClientTemplate().queryForList("queryB",new Integer(1))
这样调本来是可以的。但有个问题:parameterClass="int",所以$tableName$参数无法拿到。。但如果改为了一个带tableName和value的object对象,则如何与<result property="b" column="PLUGIN_ID" select="queryB"/> 这段话关联起来呢? |
|
返回顶楼 | |