今天前端传来一个json数据
"point": [1,2,3,4,5,6]
在后端要通过这个查询
本来想着语句是下面这种,结果不是,自己想法太简单了
SELECT * FROM statistics_displacement WHERE POINT = '1' AND POINT = '2' ;
改了语句,用的in关键字
SELECT * FROM statistics_displacement WHERE POINT IN ('1','2');
主要是下面这段代码,才实现了组合查询
queryWrapper.in("point", points);
@Override public void ComplexQuery(Page<StatisticsDisplacement> pageParam, ComplexQuery complexQuery) { QueryWrapper<StatisticsDisplacement> queryWrapper = new QueryWrapper<>(); // queryWrapper.orderByAsc("sort"); if (complexQuery == null){ baseMapper.selectPage(pageParam, queryWrapper); return; } //传入list集合 List points = complexQuery.getPoints(); System.out.println("================="); System.out.println(points); System.out.println("================="); Integer data = complexQuery.getData(); String begin = complexQuery.getBegin(); String end = complexQuery.getEnd(); //复杂查询 queryWrapper.in("point", points); if (!StringUtils.isEmpty(data) ) { queryWrapper.eq("data", data); } if (!StringUtils.isEmpty(begin)) { queryWrapper.ge("gmt_create", begin); } if (!StringUtils.isEmpty(end)) { queryWrapper.le("gmt_create", end); } baseMapper.selectPage(pageParam, queryWrapper); }
后端语句
SELECT id,date_calculated,real_time,x_dis,y_dis,h_dis,two_dis,three_dis,point,data,gmt_create,gmt_modified FROM statistics_displacement WHERE point IN (?,?) AND data = ? AND gmt_create >= ? AND gmt_create <= ? LIMIT 0,5 Parameters: 1(Integer), 2(Integer), 1(Integer), 2018-12-20 11:17:12(String), 2018-12-30 11:17:12(String)
这个enity实体类是
package com.chx.disService.query; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.util.List; @ApiModel(value = "数据查询对象", description = "数据查询对象封装") @Data public class ComplexQuery implements Serializable { //这个是api后面的解释 @ApiModelProperty(value = "测点名称 1号监测点 2号监测点") private List points; @ApiModelProperty(value = "实时数据 1小时数据 2小时数据") private Integer data; @ApiModelProperty(value = "查询开始时间", example = "2018-12-20 11:17:12") private String begin;//注意,这里使用的是String类型,前端传过来的数据无需进行类型转换 @ApiModelProperty(value = "查询结束时间", example = "2018-12-30 11:17:12") private String end; }
下次集合查询就要用关键字in