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

    一、Person实体类

     1 public class Person {
     2     private Integer personId;
     3     private String name;
     4     private Integer gender;
     5     private String personAddr;
     6     private Date birthday;  
     7     //与订单的关系是一对多
     8     private List<Orders> orderList;
     9     //与角色是一对多关系
    10     private List<Role> roleList;  
    11     //与身份证是一对一关系
    12     private IdCard ic;
    13 }

    二、mapper映射文件相关配置

     1 <!-- =====================一对多关联查询============================ -->
     2   <resultMap type="person" id="selectOrderByPersonIdRm" extends="BaseResultMap">
     3       <collection property="orderList" ofType="cn.tx.model1.Orders">
     4           <id column="ORDER_ID" property="orderId" jdbcType="INTEGER" />
     5         <result column="PERSON_ID" property="personId" jdbcType="INTEGER" />
     6         <result column="TOTAL_PRICE" property="totalPrice" jdbcType="REAL" />
     7         <result column="ADDR" property="addr" jdbcType="VARCHAR" />
     8       </collection>
     9   </resultMap>
    10   <select id="selectOrderByPersonId" parameterType="int" resultMap="selectOrderByPersonIdRm">
    11       SELECT * from person p, orders o where p.PERSON_ID = o.PERSON_ID and p.PERSON_ID = #{personId};
    12   </select>
    <resultMap type="person" id="selectOrderAndDetailByPersonIdRM" extends="BaseResultMap">
          <collection property="orderList" ofType="cn.tx.model1.Orders">
              <id column="ORDER_ID" property="orderId" jdbcType="INTEGER" />
            <result column="PERSON_ID" property="personId" jdbcType="INTEGER" />
            <result column="TOTAL_PRICE" property="totalPrice" jdbcType="REAL" />
            <result column="ADDR" property="addr" jdbcType="VARCHAR" />
            <collection property="detailList" ofType="cn.tx.model1.OrderDetail">
                <id column="DETAIL_ID" property="detailId" jdbcType="INTEGER" />
                <result column="ORDER_ID" property="orderId" jdbcType="INTEGER" />
                <result column="ITEM_NAME" property="itemName" jdbcType="VARCHAR" />
                <result column="PRICE" property="price" jdbcType="REAL" />
                <result column="QUANTITY" property="quantity" jdbcType="INTEGER" />
            </collection>
          </collection>
      </resultMap>
      <select id="selectOrderAndDetailByPersonId" parameterType="int" resultMap="selectOrderAndDetailByPersonIdRM">
          SELECT * from person p, orders o,order_detail od where p.PERSON_ID = o.PERSON_ID and o.ORDER_ID = od.ORDER_ID and p.PERSON_ID = #{personId}
      </select>
    <resultMap type="person" id="selectPersonAndRoleByPersonIdRM" extends="BaseResultMap">
          <collection property="roleList" ofType="cn.tx.model1.Role">
              <id column="ROLE_ID" property="roleId" jdbcType="INTEGER" />
            <result column="ROLE_NAME" property="roleName" jdbcType="VARCHAR" />
            <result column="DESCPRIT" property="descprit" jdbcType="VARCHAR" />
          </collection>
      </resultMap>
      <select id="selectPersonAndRoleByPersonId" parameterType="int" resultMap="selectPersonAndRoleByPersonIdRM">
          SELECT * from person p,person_role pr,role r where p.PERSON_ID=pr.PERSON_ID AND pr.ROLE_ID=r.ROLE_ID AND p.PERSON_ID=#{id}
      </select>
  • 相关阅读:
    ThreadLocal的魔数为什么是0x61c88647?
    java流程控制之 高级for循环
    java流程控制之 for循环 九九乘法表
    java流程控制之 while循环 1到1000中能被5整除的数 按3个数据一行输出
    java流程控制之 for循环 1到1000中能被5整除的数 按3个数据一行输出
    java流程控制之 for循环 1到100的奇偶数和
    java流程控制之 while 循环
    java流程控制之 while 循环 1到100的和
    java流程控制之 switch
    java流程控制之顺序结构
  • 原文地址:https://www.cnblogs.com/cat-fish6/p/9298842.html
Copyright © 2011-2022 走看看