zoukankan      html  css  js  c++  java
  • Mybatis中的延迟加载的使用方法

    Mybatis中的延迟加载的使用方法

    在Mybatis中查询订单,然后带出商品信息和快递信息的配置方法 orderMapper.xml配置如下

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    4. <mappernamespace="com.taotao.store.order.mapper.OrderMapper">
    5. <sqlid="tableName">tb_order</sql>
    6. <resultMaptype="Order"id="pojoResultMap"autoMapping="true">
    7. <idcolumn="order_id"property="orderId"/>
    8. <associationproperty="orderShipping"javaType="OrderShipping"column="order_id"select="queryOrderShippingByOrderId"autoMapping="true"></association>
    9. <collectionproperty="orderItems"javaType="Arraylist"ofType="OrderItem"autoMapping="true"select="queryOrderItemByOrderId"column="order_id">
    10. </collection>
    11. </resultMap>
    12. <selectid="queryOrderItemByOrderId"resultType="OrderItem"parameterType="String">
    13. SELECT * FROM tb_order_item WHERE order_id = #{orderId};
    14. </select>
    15. <selectid="queryOrderShippingByOrderId"resultType="OrderShipping"parameterType="String">
    16. SELECT * FROM tb_order_shipping WHERE order_id = #{orderId};
    17. </select>
    18. <selectid="queryList"resultMap="pojoResultMap">
    19. SELECT
    20. *
    21. FROM
    22. <includerefid="tableName"/>
    23. </select>
    24. <selectid="queryByID"resultMap="pojoResultMap">
    25. SELECT
    26. *
    27. FROM
    28. <includerefid="tableName"/>
    29. WHERE order_id = #{id};
    30. </select>
    31. <selectid="queryByWhere"parameterType="Where"resultMap="pojoResultMap">
    32. SELECT
    33. *
    34. FROM
    35. <includerefid="tableName"/>
    36. WHERE ${where.column} ${where.operater} #{where.value} LIMIT 1;
    37. </select>
    38. <selectid="queryListByWhere"parameterType="Where"resultMap="pojoResultMap">
    39. SELECT
    40. *
    41. FROM
    42. <includerefid="tableName"/>
    43. WHERE ${where.column} ${where.operater} #{where.value};
    44. </select>
    45. <insertid="save">
    46. INSERT INTO <includerefid="tableName"/> VALUES (#{orderId},#{payment},#{paymentType},#{postFee},#{status},#{createTime},#{updateTime},#{paymentTime},#{consignTime},#{endTime},#{closeTime},#{shippingName},#{shippingCode},#{userId},#{buyerMessage},#{buyerNick},#{buyerRate});
    47. INSERT INTO tb_order_item VALUES
    48. <foreachcollection="orderItems"item="item"separator=",">
    49. (#{item.itemId},#{orderId},#{item.num},#{item.title},#{item.price},#{item.totalFee},#{item.picPath})
    50. </foreach>
    51. ;
    52. INSERT INTO tb_order_shipping VALUES (#{orderId},#{orderShipping.receiverName},#{orderShipping.receiverPhone},#{orderShipping.receiverMobile},#{orderShipping.receiverState},#{orderShipping.receiverCity},#{orderShipping.receiverDistrict},#{orderShipping.receiverAddress},#{orderShipping.receiverZip},NOW(),NOW());
    53. </insert>
    54. <updateid="update">
    55. UPDATE <includerefid="tableName"/>
    56. <set>
    57. <iftest="payment !=null and payment != ''">
    58. payment = #{payment},
    59. </if>
    60. <iftest="postFee !=null and postFee != ''">
    61. post_fee = #{postFee},
    62. </if>
    63. <iftest="status !=null and status != ''">
    64. status = #{status},
    65. </if>
    66. <iftest="updateTime !=null and updateTime != ''">
    67. update_time = #{updateTime},
    68. </if>
    69. <iftest="paymentTime !=null and paymentTime != ''">
    70. payment_time = #{paymentTime},
    71. </if>
    72. <iftest="consignTime !=null and consignTime != ''">
    73. consign_time = #{consignTime},
    74. </if>
    75. <iftest="endTime !=null and endTime != ''">
    76. end_time = #{endTime},
    77. </if>
    78. <iftest="closeTime !=null and closeTime != ''">
    79. close_time = #{closeTime},
    80. </if>
    81. <iftest="shippingName !=null and shippingName != ''">
    82. shipping_name = #{shippingName},
    83. </if>
    84. <iftest="shippingCode !=null and shippingCode != ''">
    85. shipping_code = #{shippingCode},
    86. </if>
    87. <iftest="buyerMessage !=null and buyerMessage != ''">
    88. buyer_message = #{buyerMessage},
    89. </if>
    90. <iftest="buyerRate !=null and buyerRate != ''">
    91. buyer_rate = #{buyerRate},
    92. </if>
    93. </set>
    94. WHERE order_id = #{orderId};
    95. </update>
    96. <deleteid="deleteByID"parameterType="Long">
    97. DELETE FROM <includerefid="tableName"/> WHERE order_id = #{orderId};
    98. DELETE FROM tb_order_item WHERE order_id = #{orderId};
    99. </delete>
    100. <deleteid="deleteByIDS"parameterType="list">
    101. DELETE FROM <includerefid="tableName"/> WHERE order_id IN
    102. <foreachcollection="ids"item="id"open="("close=")"separator=",">
    103. #{id}
    104. </foreach>;
    105. DELETE FROM tb_order_item WHERE order_id IN
    106. <foreachcollection="ids"item="id"open="("close=")"separator=",">
    107. #{id}
    108. </foreach>;
    109. </delete>
    110. <updateid="paymentOrderScan"parameterType="Date">
    111. UPDATE tb_order SET
    112. status = 6,
    113. update_time = NOW(),
    114. close_time = NOW(),
    115. end_time = NOW()
    116. WHERE status = 1 AND payment_type = 1 AND create_time &lt;= #{date}
    117. </update>
    118. </mapper>

    其中此代表延迟加载

    1. <resultMaptype="Order"id="pojoResultMap"autoMapping="true">
    2. <idcolumn="order_id"property="orderId"/>
    3. <associationproperty="orderShipping"javaType="OrderShipping"column="order_id"select="queryOrderShippingByOrderId"autoMapping="true"></association>
    4. <collectionproperty="orderItems"javaType="Arraylist"ofType="OrderItem"autoMapping="true"select="queryOrderItemByOrderId"column="order_id">
    5. </collection>
    6. </resultMap>

    调用方法:

    1. http://order.taotao.com/order/query/31537859410409

    返回数据JSON

    1. {
    2. "orderId":"31537859410409",
    3. "payment":"5288",
    4. "paymentType":null,
    5. "postFee":"0",
    6. "status":1,
    7. "createTime":1537859410000,
    8. "updateTime":1537859410000,
    9. "paymentTime":null,
    10. "consignTime":null,
    11. "endTime":null,
    12. "closeTime":null,
    13. "shippingName":null,
    14. "shippingCode":null,
    15. "userId":3,
    16. "buyerMessage":null,
    17. "buyerNick":"zhang123",
    18. "buyerRate":0,
    19. "orderItems":[
    20. {
    21. "itemId":9,
    22. "orderId":"31537859410409",
    23. "num":1,
    24. "title":"苹果(Apple)iPhone 6 (A1586) 16GB 金色 移动联通电信4G手机3",
    25. "price":5288,
    26. "totalFee":5288,
    27. "picPath":"http://image.taotao.com/images/2015/03/06/2015030610045320609720.jpg"
    28. }
    29. ],
    30. "orderShipping":{
    31. "orderId":"31537859410409",
    32. "receiverName":"张志君",
    33. "receiverPhone":"",
    34. "receiverMobile":"15800000000",
    35. "receiverState":"上海",
    36. "receiverCity":"上海",
    37. "receiverDistrict":"闵行区",
    38. "receiverAddress":"三鲁公路3279号 明浦广场 3号楼 205室",
    39. "receiverZip":"200000",
    40. "created":1537859410000,
    41. "updated":1537859410000
    42. }
    43. }
    查询出的结果包括订单信息以及订单商品信息还有快递信息

    主要内容是根据传智播客视频学习总结的小结。

  • 相关阅读:
    象棋
    支持向量机
    朴素贝叶斯分类
    规则归纳
    监督学习
    序列模式
    关联规则
    从《数据挖掘概念与技术》到《Web数据挖掘》
    数据挖掘在大数据中的应用综述
    join sql图
  • 原文地址:https://www.cnblogs.com/lr393993507/p/9700055.html
Copyright © 2011-2022 走看看