weixin_42347354 2009-09-09 16:07
浏览 370
已采纳

Ibatis一对多,返回结果为resultMap可以取出多,为resultClass时取不出多。能在resultClass时也取出多么?

我的配置文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="tablenewsandkind">
 <typeAlias alias="tablenews" type="com.zzxy.po.TableNews" />
 <typeAlias alias="tablenewskind" type="com.zzxy.po.TableNewsKind" />
 <resultMap class="tablenews" id="TableNewsResult">
  <result column="ID" jdbcType="DECIMAL" property="id" />
  <result column="KIND_ID" property="kind"
   select="tablenewsandkind.getKindById" />
  <result column="TITLE" jdbcType="VARCHAR" property="title" />
  <result column="CONTENT" jdbcType="VARCHAR" property="content" />
  <result column="ITIME" jdbcType="VARCHAR" property="itime" />
  <result column="IFROM" jdbcType="VARCHAR" property="ifrom" />
  <result column="ADDRESS" jdbcType="VARCHAR" property="address" />
  <result column="IMG" jdbcType="VARCHAR" property="img" />
  <result column="ISSTATIC" jdbcType="VARCHAR"
   property="isstatic" />
  <result column="ISPASS" jdbcType="VARCHAR" property="ispass" />
 </resultMap>
 <resultMap class="tablenewskind" id="TableNewsKindResult">
  <result column="ID" jdbcType="DECIMAL" property="id" />
  <result column="NAME" jdbcType="VARCHAR" property="name" />
  <result column="DESP" jdbcType="VARCHAR" property="desp" />
  <result column="ID" property="news"
   select="tablenewsandkind.getNewsByKindId" />
 </resultMap>
 <select id="getAllNews" resultMap="TableNewsResult">
  <![CDATA[
select ID, KIND_ID, TITLE, CONTENT, ITIME, IFROM, ADDRESS, IMG, ISSTATIC, ISPASS from TABLE_NEWS
]]>
 </select>
 <select id="getKindById" resultClass="tablenewskind">
  <![CDATA[
select ID, NAME, DESP from TABLE_NEWS_KIND where ID = #value#
]]>
 </select>
 <select id="getAllKind" resultMap="TableNewsKindResult">
  <![CDATA[
select ID, NAME, DESP from TABLE_NEWS_KIND
]]>
 </select>
 <select id="getNewsByKindId" resultMap="TableNewsResult">
  <![CDATA[
select ID, KIND_ID, TITLE, CONTENT, ITIME, IFROM, ADDRESS, IMG, ISSTATIC, ISPASS from TABLE_NEWS where KIND_ID = #value#
]]>
 </select>
</sqlMap>

 

情况是这样的:

我用上面的id=getKindById查询时取不出来news(news为List类型),代码如下:

<select id="getKindById" resultClass="tablenewskind">
<![CDATA[
select ID, NAME, DESP from TABLE_NEWS_KIND where ID = #value#
]]>

但是我把这部分换成如下:

<select id="getKindById" resultMap="TableNewsKindResult">
<![CDATA[
select ID, NAME, DESP from TABLE_NEWS_KIND where ID = #value#
]]>
</select>

可以取出来news,也就是说,当返回结果为resultMap时可以取出来news。

这个问题是怎么回事,请各位不吝赐教。

 

展开全部

  • 写回答

1条回答 默认 最新

  • 阿取 2009-09-10 04:49
    关注

    resultMap映射时,你指定了主从表的关联关系:

    所以iBATIS知道怎么取出newsKind对应的news

    resultClass映射时,你没有指定主从表的关联关系,自然iBATIS无从知道怎么取出newsKind对应的news

    了解iBATIS没多久,刚翻了下官方指南,好像没给出resultClass映射时取出关联对象的方法

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥20 谁刷目标页面的uv记录器上数据,数据只记录跳转的数值
  • ¥30 数据库软件的安装方法
  • ¥15 一道以太网数据传输题
  • ¥15 python 下载群辉文件
  • ¥50 代码还没怎么运行但是需要代码功能调用数据
  • ¥15 vue请求不到数据,返回状态200,数据为html
  • ¥15 用白鹭引擎开发棋牌游戏的前端为什么这么难找
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部