mybatis配置:resultMap中嵌套集合-并解决:元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id*,result*,associat的报错

it2022-05-05  136

1.代码实体

package cn.com.mybatis.pojo; public class AbdPolicyno{ //保单号 private String policyno; //保单名称 private String pname; //被保人集合 private List<AbdBasePerson> abdBasePerson; //get和set方法 }

2.在Mapper映射中添加collection集合

<resultMap id="BaseResultMap" type="com.abdcs.entity.AbdPolicynoBasemsg"> <id column="id" jdbcType="INTEGER" property="id"/> <result column="empno" jdbcType="VARCHAR" property="empno"/> <result column="policyno" jdbcType="VARCHAR" property="policyno"/> <collection column="policyno" select="queryPersonByPolicyno" property="personList" ofType="com.abdcs.entity.AbdPolicynoPerson"/> </resultMap> <select id="queryPersonByPolicyno" parameterType="String" resultType="com.abdcs.entity.AbdPolicynoPerson"> select * from abd_policyno_person app where app.policyno = #{policyno} </select> 在以上实例中,AbdPolicyno实体与 AbdPolicynoPerson实体会进行关联,一个客户对应一个保单,一个保单对应多个用户,而policyno保单号码resultMap建议另外添加一个,因为每次操作此实体得方法时,它会自动根据你所查出得关联id 进行搜索并放入集合,导致其他方法查询有误 特别注意 : 在ResultMap中 添加 标签一定要严格按照顺序进行添加 resultMap中元素的顺序应按照括号中内容的顺序,也就是id、result、association、collection、discriminatory, 不能在result没写完的情况下插入association或者collection (否则会在运行时报:*元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id*,result*,association*,collection*,discriminator?)"* 的错误)

最新回复(0)