[程序员] Mybatis 的 collection 标签可以起到 group by 的作用? - V2EX

[程序员] Mybatis 的 collection 标签可以起到 group by 的作用? - V2EX

V2EX

有一个 java 类;

@Data@Alias("Customer")public class Customer {    private String custName;    private String address;    private List<Order> orderList;}
    <select id="getCustomer" resultMap="CustomerAndOrder">        select * from test.orders a, test.customers b where a.cust_id = b.cust_id    </select>        <resultMap id="CustomerAndOrder" type="Customer">        <result property="custName" column="cust_name"/>        <result property="address" column="cust_address"/>        <collection property="orderList" ofType="Order">            <result property="orderNum" column="order_num"/>            <result property="orderDate" column="order_date"/>        </collection>    </resultMap>

getCustomer 方法是为了查询每个顾客,都有哪些订单。

执行 getCustomer 方法后,可以看到这个链表查询起到了类似 group by 的作用,以 cust_name 和 cust_address 分组,将每个组内的订单信息弄进了一个集合内。类似于:

select cust_name, cust_address,(select 组内各行的 order_num,order_date into a List)from test.orders a, test.customers b where a.cust_id = b.cust_idgroup by cust_name, cust_address

大概是上面这个意思,但实际上 mysql 无法做到这种语句。

然后我想问的是:

  • 假设(select 组内各行的 order_num,order_date into a List)这种行为支持的话,上面这种查询是否等价于上面这 sql 语句?
  • 如果等价,出现在<result property="xxx" column="yyy"/>的 yyy 一定是 group by 的条件呗?

另外,mybatis 官方文档的这个例子:

<!-- 非常复杂的结果映射 --><resultMap id="detailedBlogResultMap" type="Blog"> <constructor>   <idArg column="blog_id" javaType="int"/> </constructor> <result property="title" column="blog_title"/> <association property="author" javaType="Author">   <id property="id" column="author_id"/>   <result property="username" column="author_username"/>   <result property="password" column="author_password"/>   <result property="email" column="author_email"/>   <result property="bio" column="author_bio"/>   <result property="favouriteSection" column="author_favourite_section"/> </association> <collection property="posts" ofType="Post">   <id property="id" column="post_id"/>   <result property="subject" column="post_subject"/>   <association property="author" javaType="Author"/>   <collection property="comments" ofType="Comment">     <id property="id" column="comment_id"/>   </collection>   <collection property="tags" ofType="Tag" >     <id property="id" column="tag_id"/>   </collection>   <discriminator javaType="int" column="draft">     <case value="1" resultType="DraftPost"/>   </discriminator> </collection></resultMap>

是否可以认为其等价 sql 语句是 group by blog_title, author_id, author_username, author_password, author_email, author_bio, author_favourite_section?


本文章由 轻惋频道 抓取自RSS,版权归源站点所有。

查看原文:[程序员] Mybatis 的 collection 标签可以起到 group by 的作用? - V2EX

Report Page