• MyBatis 一对多查询


     

    MyBatis一对多查询:

      有联合查询和嵌套查询

      联合查询是几个表联合查询,只查询一次,通过在resultMap中配置collection节点配置一对多的类即可;

      嵌套查询是先查一个表,根据这个表中的结果的外键id,再去另一个表中查询数据,也是通过collection,但是另一个表的查询通过selec节点配置

      1.1 联合查询

    复制代码

        <resultMap type="Post" id="postResultMap">
            <id column="id" property="id"/>
            <collection column="id" property="commentList" javaType="ArrayList" ofType="Comment">
            
            </collection>
        </resultMap>
        
        <select id="selectPostById" parameterType="int" resultMap="postResultMap">    
            select * from post left join comment on post.id = comment.post_id where post.id = #{id}
        </select>


    console:

      ==> Preparing: select * from post left join comment on post.id = comment.post_id where post.id = ?   ==> Parameters: 1(Integer)   <== Total: 3   com.roxy.mybatis.pojo.Post@4abdb505
    复制代码

      1.2 嵌套查询

    复制代码
        <resultMap type="Post" id="postResultMap">
            <id column="id" property="id"/>
            <collection column="id" property="commentList" javaType="ArrayList" ofType="Comment"
            select="com.roxy.mybatis.mapper.CommentMapper.selectCommentByPostId">
         </collection>
        </resultMap>
        
        <select id="selectPostById" parameterType="int" resultMap="postResultMap">
            select * from post where id = #{id}
        </select>

      
       <select id="selectCommentByPostId" parameterType="int" resultMap="commentResultMap">
            select * from comment where post_id = #{postId}
        </select>


    console:
      ==>  Preparing: select * from post where id = ?
      ==> Parameters: 1(Integer)
      <==      Total: 1
      
      ==>  Preparing: select * from comment where post_id = ?
      ==> Parameters: 1(Integer)
      <==      Total: 3

      com.roxy.mybatis.pojo.Post$$EnhancerByCGLIB$$ac65a46b@2d127a61

    复制代码
  • 相关阅读:
    【基础算法】- 全排列
    【基础算法】- 2分查找
    区块链培训
    Static Binding (Early Binding) vs Dynamic Binding (Late Binding)
    test
    No data is deployed on the contract address!
    "throw" is deprecated in favour of "revert()", "require()" and "assert()".
    Variable is declared as a storage pointer. Use an explicit "storage" keyword to silence this warning.
    京都行
    Failed to write genesis block: database already contains an incompatible
  • 原文地址:https://www.cnblogs.com/roxy/p/7665664.html
Copyright © 2020-2023  润新知