跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Mybatis 的 collection 标签可以起到 group by 的作用?
未分類
19 9 月 2020

Mybatis 的 collection 标签可以起到 group by 的作用?

Mybatis 的 collection 标签可以起到 group by 的作用?

資深大佬 : amiwrong123 6

有一个 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_id group by cust_name, cust_address 

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

Mybatis 的 collection 标签可以起到 group by 的作用?

然后我想问的是:

  • 假设(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?

大佬有話說 (3)

  • 主 資深大佬 : amiwrong123

    是我这个问题太低端了吗,还是大家都不喜欢用 mybaits 吗(刚看了隔壁 JPA 和 mybatis 对比贴子~)

  • 資深大佬 : shaoyijiong

    其实是太长了没人想看完 包括我

  • 主 資深大佬 : amiwrong123

    @shaoyijiong
    哈哈哈,好吧。晚上我自己再试试吧。忽略最后的那个例子,其实帖子很短啊[手动笑哭]

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具