tk.mybatis Example 多个or条件拼接
//需要的查询条件为 a and (b or c or d) 可以转换为 (a and b) or (a and c) or (a and d)
//第一种方式 使用andEqualTo拼接条件
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;
} //第二种方式 使用andCondition拼接sql
private Example madeExample1(ZnyOilActivityConsumeRequest request) {
Example example = new Example(ZnyOilActivityMerch.class);
example.setOrderByClause("createddat desc");
Example.Criteria c = example.createCriteria();
c.andEqualTo("activityType", (byte) 1);
c.andEqualTo("deleteState", (byte) 1);
if (StringUtils.isNotBlank(request.getEnterpriseId())) {
c.andCondition("company_id = '"+request.getEnterpriseId()+"'");
}
if (StringUtils.isNotBlank(request.getActivityState())) {
c.andCondition("activity_state = "+request.getActivityState());
}
if (StringUtils.isNotBlank(request.getCreatedby())) {
c.andCondition("createdby = '"+request.getCreatedby()+"'");
}
if (StringUtils.isNotBlank(request.getCreateddatStart()) && StringUtils.isNotBlank(request.getCreateddatEnd())) {
String createddatStart = request.getCreateddatStart();
String createddatEnd = request.getCreateddatEnd();
if (!createddatEnd.contains(" ")) {
createddatEnd += " 23:59:59";
}
c.andCondition("createddat between '"+createddatStart+"' and '"+createddatEnd+"'");
}
if (StringUtils.isNotBlank(request.getMerchandise())) {
c.andCondition("activity_rule like '%" + request.getMerchandise() + "%'");
}
//校验有效期逻辑
//1.活动有效期限起在查询日期起止范围之内
//2.活动有效期限止在查询日期起止范围之内
//3.活动有效期限起止在查询日期起止范围之内符合1,2情况
//4.查询开始日期起止包含在活动有效期限起止之内
if (StringUtils.isNotBlank(request.getValidStart()) && StringUtils.isNotBlank(request.getValidEnd())) {
String validStart = request.getValidStart();
String validEnd = request.getValidEnd();
if (!validEnd.contains(" ")) {
validEnd += " 23:59:59";
}
c.andCondition("((valid_start between '"+validStart+"' and '"+validEnd+"') or (valid_end between '"+validStart+"' and '"+validEnd+"') or (valid_start <= '"+validStart+"' and valid_end >= '"+validEnd+"'))");
}
return example;
} //第三种方式 可以直接在CustomMapper文件里面用Mybatis方法写查询sql
tk.mybatis Example 多个or条件拼接的更多相关文章
- java-mybaits-015-mybatis逆向工程最佳实践【基础mybatis-generator、tk.mybatis、mubatis-plus】
一.概述 三款框架的功能对比 Mybatis-generator 通用Mapper Mybatis-Plus 代码生成器 支持自动生成Model,Mapper,Mapper XML文件 生成方式不够灵 ...
- SpringBoot框架之通用mapper插件(tk.mybatis)
一.Tkmybatis的好处 Tkmybatis是在mybatis框架的基础上提供了很多工具,让开发更加高效.这个插件里面封装好了我们需要用到的很多sql语句,不过这个插件是通过我们去调用它封装的各种 ...
- 初识 tk.mybatis.mapper
在博客园发表Mybatis Dynamic Query后,一位园友问我知不知道通用mapper,仔细去找了一下,还真的有啊,比较好的就是abel533写的tk.mybatis.mapper. 本次例子 ...
- 初识 tk.mybatis.mapper 通用mapper
在博客园发表Mybatis Dynamic Query后,一位园友问我知不知道通用mapper,仔细去找了一下,还真的有啊,比较好的就是abel533写的tk.mybatis.mapper. 本次例子 ...
- 使用tk.mybatis快速开发curd
使用mybatis已经是可以快速开发程序了,对于单表的curd似乎是一种可抽象的结果,下面介绍tk.mybatis的使用方式. maven引用 我使用的是这个版本,所以相关功能介绍也是这个版本. 使用 ...
- 使用mybatis-generator插件结合tk.mybatis自动生成mapper二三事
本篇文章将介绍使用spring boot框架,引入mybatis-generator插件,结合tk.mybatis自动生成Mapper和Entity的一整套流程,其中包括最重要的踩坑与填坑. ...
- tk.mybatis扩展通用接口
一.tk.mybatis已经为我们封装好了许多拆箱即用的通用mapper,但在实际的项目开发中想必不少小伙伴在数据库设计中都会采用逻辑删除这种方案,再去使用通用的mapper接口就不行了.这时候就需要 ...
- 使用mybatis-generator插件结合tk.mybatis自动生成mapper
本篇文章将介绍使用spring boot框架,引入mybatis-generator插件,结合tk.mybatis自动生成Mapper和Entity的一整套流程,其中包括最重要的踩坑与填坑. ...
- tk.mybatis中常用方法的使用(最实用)
一.前言 不知道环境和maven依赖怎么配置的,先看一下这个: SpringBoot整合tk.mybatis 二.方法的介绍和使用 插入方法 int insertSelective(T var1); ...
随机推荐
- Docker容器构建过程的安全性分析
来源:嘶吼专业版 ID:Pro4hou DevOps概念的流行跟近些年微服务架构的兴起有很大关系,DevOps是Dev(Development)和Ops(Operations)的结合,Dev负责开发, ...
- python之垃圾回收机制
一.前言 Python 是一门高级语言,使用起来类似于自然语言,开发的时候自然十分方便快捷,原因是Python在背后为我们默默做了很多事情,其中一件就是垃圾回收,来解决内存管理,内存泄漏的问题. 内存 ...
- oracle数据库的导入导出命令
说明:将以下命令复制到cmd命令行中运行即可,file代表文件名数据导入imp zzbweb/zzbweb@orcl file=e:\zzbweb.dmp fromuser=zzbweb touser ...
- TFS如何强制撤销别人的机器签出的文件
原文:http://blog.csdn.net/jxian2009/article/details/50331955 用过TFS的都知道,没有比同事离职了,剩下一堆签出的文件更蛋疼的. 试过各种方法, ...
- 解决spark-shell输出日志信息过多
import org.apache.log4j.Logger import org.apache.log4j.Level Logger.getLogger("org").setLe ...
- 注意sqlite3和java的整数数据类型的区别
作为新手的我,没有考虑数据库和java的数据类型的对应上的区别: sqlite3的数据类型和java数据类型对应上要小心,特别是整数类型. java 中int类型4位存储,范围 -2^31到2^31- ...
- Ubuntu同屏多终端
sudo apt-get install terminator
- 《从0到1学习Flink》—— Flink 中几种 Time 详解
前言 Flink 在流程序中支持不同的 Time 概念,就比如有 Processing Time.Event Time 和 Ingestion Time. 下面我们一起来看看这几个 Time: Pro ...
- ORA-29875 出现问题解决办法
出现问题:Underlying DBMS error [ORA-29875: 无法执行 ODCIINDEXINSERT 例行程序ORA-20085: Insert Spatial Reference ...
- ps使用
1.图片剪裁 1.按快捷键M(矩形选择工具)-> 选中要扣出的图片(按shift可正方形)->按快捷键C(剪裁工具)->双击鼠标选中区域,剪裁成功. 2.选中psd中的图标 1.按快 ...