Mybatis 嵌套查询(高级结果映射)

来源:互联网 发布:国家网络管理平台 编辑:程序博客网 时间:2024/05/21 01:43

需求说明

有三张表,省级表,市级表,区级表。
需要做一个关联嵌套查询

public class Province {//省份    private String code;    private String name;    private List<City> cities;}
public class City {//城市    private String code;    private String name;    private List<Area> district;}
public class Area {//区域    private String code;    private String name;}

这里我省略了实体类的构造方法。通过实体类是可以看出表结构,和表之间的关联关系的。

//这是在MybatisXml文件中做的关联映射<resultMap type="com.ea.bic.model.vo.Area" id="AreaMap">//区      <id column="id" property="code"/>      <result column="areaname" property="name"/>    </resultMap>    <resultMap type="com.ea.bic.model.vo.City" id="cityMap">//市      <id column="cid" property="code"/>      <result column="citname" property="name"/>      <collection property="district" ofType="com.ea.bic.model.vo.Area" resultMap="AreaMap" />    </resultMap>    <resultMap type="com.ea.bic.model.vo.Province"  id="ProvinceMap">//省      <id column="pid" property="code" />      <result column="proname" property="name" />      <collection property="cities" ofType="com.ea.bic.model.vo.City" resultMap="cityMap" />      <!--两种方式的不同之处在这里,自己分析就可以知道-->    </resultMap>

接下来就是SQL

<select id="findAreaList"  resultMap="ProvinceMap">            t_province.id pid,            t_province.areaName proname,            t_city.id cid,            t_city.areaName citname,            t_district.id id,            t_district.areaName areaname        FROM            t_area t_district        INNER JOIN t_area t_city ON t_district.parent_id = t_city.id        INNER JOIN t_area t_province ON t_city.parent_id = t_province.id</select>   

列名的别名 一定要与配置的映射一致,不然你懂得。

后来为了这个查询的效率更高一点,我把三张表整成了一张视图。

然后SQL就成了这样

<select id="findAreaList"  resultMap="ProvinceMap">        select         t.id id,        t.areaName areaname,        t.cid cid,        t.citName citname,        t.pid pid,        t.proname from t_area_full t</select>   

数据的接收就用List来接收就OK了
当时我就卡在这里,一直找不到问题。

总结一下

想想也没啥好总结的,主要是为了记录下,防止下次还出现这样的问题

学编程要是不会总结,那跟咸鱼又有什么区别~

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果手机屏不动了怎么办 苹果6老是卡屏怎么办 苹果x卡屏死机怎么办 苹果6死机卡屏怎么办 苹果手机主屏死机怎么办 苹果7手机卡屏死机怎么办 苹果6s卡死了怎么办 6s手机显示丢失锁定怎么办 酷比s9被root怎么办 垃圾清理把相片删除了怎么办 小米电脑怎么下载软件怎么办 华为手机pin码忘了怎么办 锁屏密码忘了怎么办 抖音停止运行了怎么办? 华为手机右下角有个小人怎么办 华为手机程序停止运行怎么办 华为手机不支持软件搬家怎么办 红米手机没有任务键怎么办 进网许可丢了怎么办 华为稳私空间被稳蔵怎么办 华为手机安装不了软件怎么办 华为手机自动安装软件怎么办 手机在实体店买贵了怎么办 日本买的kindle坏了怎么办 华为麦芒4屏幕失灵怎么办 华为麦芒6屏幕失灵怎么办 手机为什么总显示内存不足怎么办 小米云服务满了怎么办 魅蓝s6声音小怎么办 华为畅享7s丢失怎么办 华为耳机孔坏了怎么办 苹果手机耳机插孔坏了怎么办 荣耀8听筒声音小怎么办 荣耀8听筒音量小怎么办 华为荣耀6声音小怎么办 华为荣耀v8通话声音小怎么办 华为p20没有耳机孔怎么办 华为荣耀手机耳机声音小怎么办 小米5x显示耳机怎么办 手机进水听音乐人声小怎么办 华为荣耀v8手机音量小怎么办