<resultMap id="BaseResultMap" type="com.wj.weixin.menu.model.WxMenu" >
<id column="WX_ID" property="wxId" jdbcType="VARCHAR" />
<id column="id" property="id" jdbcType="INTEGER" />
<result column="menu_type" property="menuType" jdbcType="VARCHAR" />
<result column="menu_name" property="menuName" jdbcType="VARCHAR" />
<result column="menu_key" property="menuKey" jdbcType="VARCHAR" />
<result column="menu_url" property="menuUrl" jdbcType="VARCHAR" />
<result column="media_id" property="mediaId" jdbcType="VARCHAR" />
<result column="pid" property="pid" jdbcType="INTEGER" />
<result column="is_has_child" property="isHasChild" jdbcType="INTEGER" />
<result column="seq" property="seq" jdbcType="INTEGER" />
<result column="keywords_id" property="keywordsId" jdbcType="INTEGER" />
<result column="del_flag" property="delFlag" jdbcType="INTEGER" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
</resultMap>
<resultMap type="com.wj.weixin.menu.model.WxMenu" id="menuResultMap" extends="BaseResultMap">
<collection property="subWxMenu" column="id" javaType="ArrayList" ofType="com.wj.weixin.menu.model.WxMenu">
<id column="b_id" property="id" jdbcType="INTEGER" />
<result column="b_WX_ID" property="wxId" jdbcType="VARCHAR" />
<result column="b_menu_type" property="menuType" jdbcType="VARCHAR" />
<result column="b_menu_name" property="menuName" jdbcType="VARCHAR" />
<result column="b_menu_key" property="menuKey" jdbcType="VARCHAR" />
<result column="b_menu_url" property="menuUrl" jdbcType="VARCHAR" />
<result column="b_media_id" property="mediaId" jdbcType="VARCHAR" />
<result column="b_pid" property="pid" jdbcType="INTEGER" />
<result column="b_is_has_child" property="isHasChild" jdbcType="INTEGER" />
<result column="b_seq" property="seq" jdbcType="INTEGER" />
<result column="b_keywords_id" property="keywordsId" jdbcType="INTEGER" />
<result column="b_del_flag" property="delFlag" jdbcType="INTEGER" />
<result column="b_create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="b_update_time" property="updateTime" jdbcType="TIMESTAMP" />
</collection>
</resultMap>
<select id="selectAllByWxId" resultMap="menuResultMap" parameterType="java.lang.String" >
select
a.WX_ID,
a.id,
a.menu_type, a.menu_name,
a.menu_key, a.menu_url,
a.media_id, a.pid, a.is_has_child,
a.seq, a.keywords_id, a.del_flag,
a.create_time, a.update_time,
b.WX_ID AS b_WX_ID,
b.id AS b_id,
b.menu_type AS b_menu_type,
b.menu_name AS b_menu_name,
b.menu_key AS b_menu_key,
b.menu_url AS b_menu_url,
b.media_id AS b_media_id,
b.pid AS b_pid,
b.is_has_child AS p_is_has_child,
b.seq AS b_seq,
b.keywords_id AS b_keywords_id,
b.del_flag AS b_del_flag,
b.create_time AS b_create_time,
b.update_time AS b_update_time
FROM t_wx_menu a left
JOIN t_wx_menu b on b.pid = a.id
where a.WX_ID = #{wxId,jdbcType=VARCHAR}
and a.del_flag = 0
and b.del_flag = 0
</select>
以上是mapper.xml 配置,
关键点:collection 标签
javaType ,ofType
sql的写法
关联查存在着N+1的问题
见:http://www.tuicool.com/articles/M3QJvu