//需要的查询条件为 a and (b or c or d) 可以转换为 (a and b) or (a and c) or (a and d)
private Example madeExample(R request) { Example example = new Example(C.class); example.setOrderByClause("createddat desc"); Example.Criteria c = example.createCriteria(); Example.Criteria c1 = example.createCriteria(); Example.Criteria c2 = example.createCriteria(); c.andEqualTo("activityType", (byte) 1); c1.andEqualTo("activityType", (byte) 1); c2.andEqualTo("activityType", (byte) 1); c.andEqualTo("deleteState", (byte) 1); c1.andEqualTo("deleteState", (byte) 1); c2.andEqualTo("deleteState", (byte) 1); if (StringUtils.isNotBlank(request.getCompanyId())) { c.andEqualTo("companyId", request.getCompanyId()); c1.andEqualTo("companyId", request.getCompanyId()); c2.andEqualTo("companyId", request.getCompanyId()); } if (StringUtils.isNotBlank(request.getActivityState())) { c.andEqualTo("activityState", request.getActivityState()); c1.andEqualTo("activityState", request.getActivityState()); c2.andEqualTo("activityState", request.getActivityState()); } if (StringUtils.isNotBlank(request.getCreatedby())) { c.andEqualTo("createdby", request.getCreatedby()); c1.andEqualTo("createdby", request.getCreatedby()); c2.andEqualTo("createdby", request.getCreatedby()); } if (StringUtils.isNotBlank(request.getCreateddatStart()) && StringUtils.isNotBlank(request.getCreateddatEnd())) { c.andGreaterThanOrEqualTo("createddat", request.getCreateddatStart()); c1.andGreaterThanOrEqualTo("createddat", request.getCreateddatStart()); c2.andGreaterThanOrEqualTo("createddat", request.getCreateddatStart()); String endDate = request.getCreateddatEnd(); if (!endDate.contains(" ")) { endDate += " 23:59:59"; } c.andLessThanOrEqualTo("createddat", endDate); c1.andLessThanOrEqualTo("createddat", endDate); c2.andLessThanOrEqualTo("createddat", endDate); } if (StringUtils.isNotBlank(request.getMerchandise())) { c.andLike("activityRule", "%" + request.getMerchandise() + "%"); c1.andLike("activityRule", "%" + request.getMerchandise() + "%"); c2.andLike("activityRule", "%" + request.getMerchandise() + "%"); } //校验有效期 if (StringUtils.isNotBlank(request.getValidStart()) && StringUtils.isNotBlank(request.getValidEnd())) { String endDate = request.getValidEnd(); if (!endDate.contains(" ")) { endDate += " 23:59:59"; } c.andBetween("validStart", request.getValidStart(),endDate); c1.andBetween("validEnd",request.getValidStart(),endDate); c2.andCondition("valid_start <=",request.getValidStart()); c2.andCondition("valid_end >=",endDate); example.or(c1); example.or(c2); } return example; }
原文:https://www.cnblogs.com/liw66/p/10996549.html