遇到一个项目前端要的格式是一个json对象里嵌套一个json对象,再嵌套一个list集合,于是尝试用xml的方式一次性映射,尝试几次都失败了.
需求是回显一个评论集合,可能携带多个父评论和对应的多个子评论,子评论下面没有子评论,最多到2级.
最早尝试使用多表sql语句查询,但是犯了一个错误,就是如果连接查询的话where zi.fid=fu.id 这个变成必须条件,然后返回的数据就是必须携带子评论的回复,没有子评论的查询不出来
然后尝试使用两条sql语句,进行子连接查询,但是映射的时候又出现了很多问题,最后经过几次尝试,发现这种写法,可以搞定.
下面是测试代码 以及xml的写法
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.heima.dynamic_sql.mapper.JMapper"> <resultMap id="rm" type="com.heima.dynamic_sql.entity.CommnetVO"> <association property="jiangeComment"> <id column="id" property="id"/> <result column="content" property="content"/> <result column="author" property="author"/> <result column="likes" property="likes"/> <result column="fid" property="fid"/> </association> <collection property="ziCommnets" column="id" ofType="com.heima.dynamic_sql.entity.ZiCommnet" javaType="List" select="com.heima.dynamic_sql.mapper.JMapper.selectZi"> </collection> </resultMap> <select id="selectAll" resultMap="rm"> select * from jiange_comment WHERE article_id = #{id} </select> <select id="selectZi" resultType="com.heima.dynamic_sql.entity.ZiCommnet"> select * from jiange_comment WHERE fid = #{id} </select> </mapper>