1. 首页
  2. 软件开发
  3. JAVA
  4. MyBatis-05

MyBatis-05

  • 发布于 2024-09-26
  • 12 次阅读

多表查询
1.多表查询的sql语句需要我们自己编写 连接查询
2.自己设计存储数据的实体类 承接多个表查询的结果
3.自己定义结果集映射 resultMap

对一 属性中包含对方的对象 private Customer customer
对多 属性中包含对方的对象集合 private List orderList

    <typeAliases>
        <package name="com.dc.pojo"/>   <!--对类起别名-->
    </typeAliases>

//起别名后
com.dc.mapper.Order     可以直接写为      order

自定义映射(对一查询) association

    <resultMap id="orderMap" type="order">
        <!--主键-->
        <id column="order_id" property="orderId"></id>

        <!--普通列-->
        <result column="order_name" property="orderName"></result>
        <result column="order_id" property="customerId"></result>

        <!--
        对象属性:  property     对象属性名
                  javaType     对象类型
        -->
        <association property="customer" javaType="customer">
            <id column="customer_id" property="customerId"></id>
            <result column="customer_name" property="customerName"></result>
        </association>
    </resultMap>
    <select id="queryOrderById" resultMap="orderMap">
        select * from t_order tor join t_customer tur
        on tor.customer_id=tur.customer_id
        where tor.order_id=#{
   id};
    </select>

自定义映射(对多查询) collection

<resultMap id="customerMap" type="customer">
        <id column="customer_id" property="customerId"></id>
        <result column="customer_name" property="customerName"></result>

        <!--
        collection:      给集合属性赋值
            property 集合属性名
            ofType   集合的泛型类型
        -->
        <collection property="orderList" ofType="order">
            <id column="order_id" property="orderId"></id>
            <result column="order_name" property="orderName"></result>
            <result column="customer_id" property="customerId"></result>
            <!--不需要再给private Customer customer赋值,否则产生循环-->
        </collection>
    </resultMap>
    <select id="queryList" resultMap="customerMap">
        select * from t_order tor join t_customer tur
        on tor.customer_id=tur.customer_id
    </select>
```prism language-java
<setting name="autoMappingBehavior" value="FULL"/>          <!--开启后,resultMap中的result标签可以不写,会自动映射-->


    <resultMap id="customerMap" type="customer">
        <id column="customer_id" property="customerId"></id>

        <collection property="orderList" ofType="order">
            <id column="order_id" property="orderId"></id>
        </collection>
    </resultMap>
    <select id="queryList" resultMap="customerMap">
        select * from t_order tor join t_customer tur
        on tor.customer_id=tur.customer_id
    </select>

原文链接: https://blog.csdn.net/qq_53568730/article/details/135448831