在用mybatis进行数据库查询时,对查询结果进行自动分组,在mapper.xml中的配置有些注意的地方,下面是实际项目中一个例子。在数据库中查询中如下:

在结果集中需要对alarmDate进行分组,比如2017-04-05这两条数据,分组后最终实现如下效果:

{
"alarmDate": "2017-04-05",
"entityCounts": [
{
"count": 2,
"alarmLevel": "警告"
},
{
"count": 567,
"alarmLevel": "严重"
}
]
}

那么这种情况在mapper.xml该怎么配呢?需要配一个resultMap, 在里面配置分组的关键字段。

  <resultMap id="alarmCountDate" type="monitor.entity.EntityCountDateList">
<id property="alarmDate" column="alarmDate" />
<collection property="entityCounts" ofType="monitor.entity.EntityCountDate">
<result property="alarmLevel" column="alarmLevel" />
<result property="count" column="count" />
</collection>
</resultMap> <!--resultMap的值为上面resultMap的id。 -->
<select id="getAlarmCountByDate" parameterType="map" resultMap="alarmCountDate">
<![CDATA[
select count(t.alarmLevel) as count,t.alarmLevel,date(t.alarmDate) as alarmDate from (select alarmDate,alarmLevel
from alarm_info where alarmDate>=#{alarmStartDate} and alarmDate<=#{alarmEndDate}
group by alarmLevel,alarmDate ) t group by t.alarmLevel,date(t.alarmDate) order by alarmDate; ]]>
</select>

涉及到两个对象类,如下

类monitor.entity.EntityCountDateList

package monitor.entity;

import java.util.List;

public class EntityCountDateList {

    private String alarmDate;
private List<EntityCountDate> entityCounts;
public String getAlarmDate() {
return alarmDate;
}
public void setAlarmDate(String alarmDate) {
this.alarmDate = alarmDate;
}
public List<EntityCountDate> getEntityCounts() {
return entityCounts;
}
public void setEntityCounts(List<EntityCountDate> entityCounts) {
this.entityCounts = entityCounts;
} }

类:monitor.entity.EntityCountDate

package monitor.entity;

public class EntityCountDate {

    private Integer count;
private String alarmLevel;
public EntityCountDate(){}
public EntityCountDate(String alarmLevel,Integer count){
this.count = count;
this.alarmLevel = alarmLevel;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public String getAlarmLevel() {
return alarmLevel;
}
public void setAlarmLevel(String alarmLevel) {
this.alarmLevel = alarmLevel;
} }

在resultMap中配置的entityCounts为类EntityCountDateList中List<EntityCountDate>的名字,这一步很关键。

<collection property="entityCounts" ofType="monitor.entity.EntityCountDate">

最新文章

  1. Python开发程序:学员管理系统(mysql)
  2. Responsive布局技巧
  3. KMP算法模板
  4. MVC弹出子页面向父页面传值
  5. 习总强调网络安全 ,咱们国产SSL证书必须加快普及速度
  6. Nginx 禁止访问某个目录或文件的设置方法
  7. Spring框架知识总结-注入Bean的各类异常
  8. oracle RAC调整数据文件大小并移动表到指定的表空间
  9. 关于AndroidManifest.xml
  10. IronJs 无相关源?
  11. gitlab自动备份
  12. Java 脚本化编程指南
  13. JDBC详解系列(四)之建立Stament和执行SQL语句
  14. JAVA虚拟机之对象探秘
  15. Attempted to serialize java.lang.Class: org.hibernate.proxy.HibernateProxy. Forgot to register a type adapter?
  16. 【网络编程】服务端产生大量的close_wait状态的进程分析
  17. sap 最新财报以及云业务转型情况
  18. 【jsp】JSTL标签大全详解
  19. 【C#】删除集合(Collection)里的元素(Item)
  20. crontab笔记

热门文章

  1. springboot jpa | mybaits
  2. mui 本地打包
  3. 拒绝IP登陆
  4. NYOJ-277-车牌号
  5. linux与开发板串口通信
  6. 关于 Nginx 并发连接数
  7. ylb:使用sql语句实现添加、删除约束
  8. 哇哦!恍然大悟般的“share”功能的实现!
  9. mysql用merge合并表
  10. 闪屏(Splash)