问题描述
- 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没有值,可是明明就应该有值,我想不通,求大神帮忙!!!
解决方案
解决方案二:
你的getRoles这个SQL没有参数,而关联查询时是以id为查询条件的。
你的resultMap配置没有问题,建议修改下getRoles的参数再试试。祝好!
时间: 2024-10-02 17:42:38