小小孩纸 2015-09-26 09:03 采纳率: 0%
浏览 1952

ibatis一对多映射读取内容为空

最近在学ibatis,在写一对多的时候遇到了一些问题,有两张表为ABC(String id,String status),roles(String id,Integer role),有着一对多的关系。
ABC的一个id对应着多个role,两者之间用id关联。但是我查role的时候总是没有值。

两张表的bean文件我不写了。另外有一个bean为

 public class ABCRoles{
 private String id;
 private String status;
private List roles;
//省略get和set
 }

xml文件内容为

 <?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="relation" >

    <typeAlias alias="abc" type="XXX.abc" />

    <resultMap id="abcResultMap" class="abc" >
    <result column="id" property="id"  />
    <result column="status" property="status" />
    <result column="id" property="roles" select="relation.getRoles"/>
  </resultMap>

    <select id="getXXX"  resultMap="abcResultMap">
        <![CDATA[ 
        select id,status from ABC 
        ]]>               
    </select>

    <select id="getRoles" resultClass="java.lang.Integer">
        <![CDATA[ 
                select role from roles 
            ]]>                 
    </select>

</sqlMap>

主函数就主要是调用了

 List list = getSqlMapClientTemplate().queryForList("relation.getXXX");

但是在显示的时候,发现 ABCRoles中的roles没有值,可是明明就应该有值,我想不通,求大神帮忙!!!

  • 写回答

1条回答 默认 最新

  • 毕小宝 博客专家认证 2015-09-27 12:12
    关注

    你的getRoles这个SQL没有参数,而关联查询时是以id为查询条件的。
    你的resultMap配置没有问题,建议修改下getRoles的参数再试试。祝好!

    评论

报告相同问题?

悬赏问题

  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!