mybatis使用group by分组

Posted Chuang-2

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis使用group by分组相关的知识,希望对你有一定的参考价值。

group by

单表

sql返回多个列的 都是用 List<Map<String, Long>>,注意:返回的计算结果都是Long类型

@MapKey("ltStatus")
List<Map<String, Object>> groupBy1();

List<Map<String, Object>> groupBy2();
<select id="groupBy1" resultType="java.util.Map">
    select login_name as lt_status, count(*)
    from `user`
    group by lt_status
</select>

<select id="groupBy2" resultType="java.util.Map">
    select login_name, count(*)
    from `user`
    group by login_name
</select>

@MapKey是group by的字段驼峰命名

groupBy1,map有两个元素

  • lt_status为key,value是login_name的字段值
  • count(*)为key,value是计算的结果

groupBy2,map有连个元素

  • login_name为key,value是 login_name字段值
  • count(*)为key,value是计算的结果
@MapKey("userId")
List<Map<String, Object>> guanlian();

@MapKey("userId")
List<Map<String, Object>> guanlian2();
<select id="guanlian" resultType="java.util.Map">
    select o.user_id, count(1)
    from `order` o, `user` u
    where u.user_id = o.user_id
    group by o.user_id
</select>

<select id="guanlian2" resultType="java.util.Map">
    select o.user_id , count(1) as num
    from `order` o, `user` u
    where u.user_id = o.user_id
    group by o.user_id
</select>

guanlian

  • user_id为key

guanlian2

  • 第一个元素 user_id为key
  • 第二个元素 num为key

尽量查询出来 在service层使用stream进行分组

以上是关于mybatis使用group by分组的主要内容,如果未能解决你的问题,请参考以下文章

高级分组group by group by cube group by rollup 使用说明

在oracle里 group by 分组是怎么回事 为啥有时候不加group by说不是单组分组函数?

如何使用group by 分组查询表中所有字段信息

SQL如何先用group by分组,并将分组的结果distinct?

【MySQL】分组查询(GROUP BY)

关于C#中group by如何实现多条件分组汇总