官方介绍
IN 操作符
- 对集合进行非空判断,否则mysql 出现" select * (where colum in ())" 报错
List<Object> taskIdList = resultsMapper.selectObjs(qw);
QueryWrapper<ResultSummary> qwJiraTotal = new QueryWrapper<>();
Integer taskJiraTotalCount = 0;
if(!taskIdList.isEmpty()){
qwJiraTotal.select("distinct jira_key").in("result_id", taskIdList);
taskJiraTotalCount = resultSummaryMapper.selectList(qwJiraTotal).size();
}
OR 拼接/嵌套
1. 拼接 where a AND (b OR c)
/* 按天统计指定类型任务的个数 */
List<String> eqSuite = Arrays.asList("smoke_test", "beta_test", "monkey_test", "monkey_camera", "mtbf_test");
QueryWrapper<Results> qwProjectFirstTask = new QueryWrapper<>();
qwProjectFirstTask
.eq("project_id", projectid)
.between("date_format(create_time, '%Y-%m-%d')", dateStart, dateEnd);
/* or 拼接 start */
qwProjectFirstTask
.and(wrapper
-> wrapper
.in("suite_name", eqSuite)
.or().likeRight("suite_name", "smoke_dev"));
/* or 拼接 end */
qwProjectFirstTask
.select("count(*) as tasknum", "date_format(create_time, '%Y-%m-%d') as mdate")
.groupBy("date_format(create_time, '%Y-%m-%d')");
List<Map<String, Object>> resultSrc = resultsMapper.selectMaps(qwProjectFirstTask);
between
1. 数据库是datetime 格式,查询参数是Date类型时,左包含需要把查询参数Date 转成String 类型Date
QueryWrapper<Results> qwProjectFirstTask = new QueryWrapper<>();
qwProjectFirstTask
.select("count(*) as tasknum", "date_format(create_time, '%Y-%m-%d') as mdate")
.eq("project_id", projectid)
.between("date_format(create_time, '%Y-%m-%d')",dateToY_M_D(dateStart), dateToY_M_D(dateEnd))
.groupBy("date_format(create_time, '%Y-%m-%d')");
List<Map<String, Object>> resultSrc = resultsMapper.selectMaps(qwProjectFirstTask);
/* java.util.Date to String */
private String dateToY_M_D(java.util.Date date){
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
String s = sf.format(date);
return s;
}