zoukankan      html  css  js  c++  java
  • MyBatis关联查询,一对多关联查询

    实体关系图,一个国家对应多个城市

    一对多关联查询可用三种方式实现:

    • 单步查询,利用collection标签为级联属性赋值;
    • 分步查询:
      • 利用association标签进行分步查询;
      • 利用collection标签进行分步查询

    单步查询

    利用collection标签实现一对多单步关联查询:

    • 指定进行关联查询的Java Bean字段,即collection标签的 property 属性;
    • 指定集合中的Java Bean类型,即collection标签的 ofType属性;

     实体类

    public class CountryPlus {
        Long id;
        String name;
        Date lastUpdate;
        List<City> cityList;
    }
    public class City {
        Long id;
        String name;
        Long countryId;
        Date lastUpdate;
    }

    查询标签

        <select id="selectCountryPlusById" resultMap="countryPlusResultMap">
            select country.country_id as country_id,
                    country,
                    country.last_update as last_update,
                    city_id,
                    city,
                    city.country_id as city_country_id,
                    city.last_update as city_last_update
            from country left join city on  country.country_id = city.country_id
            where country.country_id=#{id}
        </select>

    resultMap

        <resultMap id="countryPlusResultMap" type="canger.study.chapter04.bean.CountryPlus">
            <id column="country_id" property="id"/>
            <result column="country" property="name"/>
            <result column="last_update" property="lastUpdate"/>
            <collection property="cityList" ofType="canger.study.chapter04.bean.City">
                <id column="city_id" property="id"/>
                <result column="city" property="name"/>
                <result column="city_country_id" property="countryId"/>
                <result column="city_last_update" property="lastUpdate"/>
            </collection>
        </resultMap>

     分步查询

    利用collection标签进行分步查询

    • 指定collection标签的 property 属性;
    • 通过select属性指定下一步查询使用的 statement id;
    • 通过column属性向下一步查询传递参数,传递多个参数的方法见MyBatis关联查询,一对一关联查询中的分步查询;

    select标签

        <select id="selectCountryPlusByIdStep" resultMap="countryPlusResultMapStep">
            select *
            from country
            where country_id=#{id}
        </select>

    resultMap标签

        <resultMap id="countryPlusResultMapStep" type="canger.study.chapter04.bean.CountryPlus">
            <id column="country_id" property="id"/>
            <result column="country" property="name"/>
            <result column="last_update" property="lastUpdate"/>
            <collection property="cityList"
                         select="canger.study.chapter04.mapper.CityMapper.selectCityByCountryId"
                         column="country_id">
            </collection>
        </resultMap>

    利用association标签进行分步查询

      和使用collection标签的方式相同

  • 相关阅读:
    字和字节和位的关系
    什么是arp协议?
    Python解释器有哪些?Python解释器种类
    简述解释型和编译型编程语言?
    Python3基础(五) 函数
    Python3基础(四) 条件与循环控制
    Python3基础(三) 运算符
    Python3基础(一) Hello World
    1987年国际C语言混乱代码大赛获奖的一行代码
    C++学习之普通函数指针与成员函数指针
  • 原文地址:https://www.cnblogs.com/canger/p/9997422.html
Copyright © 2011-2022 走看看