Mybatis QueryWrapper,UpdateWrapper条件构造器的使用纪要
·
1. Mybatis UpdateWrapper条件构造器的使用
背景: 以前项目没有怎么用过此类构造器,现在项目遇到了正好记录一下.
问题: 如何使用Mybatis UpdateWrapper构造器进行数据修改?
解决办法:
为了更方便直观的理解,下面引入一段项目中的代码以供参考:
Eg:
// 通过|驳回
// 数据状态字段.0逻辑删除,1编辑中,2已提交配置(业务单生成中),3通过,4驳回.
@PutMapping("/xxx")
public JsonResult xxx(String id, Boolean status) {
if(yyyService.update(new UpdateWrapper<entity>().eq("ID", id).set("STATUS", status==true?"2":"0"))) {
return JsonResult.ok().put("status", "操作成功!");
}
return JsonResult.error().put("satus", "操作失败!");
}
// XXX提供接口:通过|驳回
@PutMapping("/xxxtwo")
@ApiOperation(value = "通过|驳回.true通过,false驳回.")
// 数据状态字段.0逻辑删除,1编辑中,2已提交数据(业务单生成中),3通过,4驳回.
public JsonResult xxxtwo(String id, Boolean status) {
if(yyyService.update(new UpdateWrapper<entity>().eq("ID", id).set("STATUS", status==true?"3":"4"))) {
return JsonResult.ok().put("status", "操作成功!");
}
return JsonResult.error().put("satus", "操作失败!");
}
2. Mybatis QueryWrapper条件构造器的使用
背景: 以前项目没有怎么用过此类构造器,现在项目遇到了正好记录一下.
问题: 如何使用Mybatis QueryWrapper构造器进行数据查询?
解决办法:
为了更方便直观的理解,下面引入一段项目中的代码以供参考:
Eg:
1. 条件查询where,and,or,in等等.
2. 排序.
yyyService.list(new QueryWrapper<entity>().orderByDesc("CREATED_AT"));
oooService.getOne(new QueryWrapper<entity>().eq("user_id", userId).ne("changesflag","1").isNull("is_delete"));
oooService.list(new QueryWrapper<entity>().eq("COLUMN",VAL).eq("CC_STATUS", "1").or().eq("CC_STATUS", "2"));
下面是对应调度的接口暴露:
| 条件 | 作用 | 格式 |
| eq | 等于 = | new QueryWrapper.eq("字段",val) |
ne | 不等于 |
QueryWrapper<表名> 对象 = new QueryWrapper(); 对象.ne("字段",val) |
| gt | 大于 | |
| ge | 大于等于 | |
| lt | 小于 | |
| le | 小于等于 | |
| betwen | 在...之间 | |
| noBetween | 不在....之间 | |
| like | 模糊匹配 | |
| noLike | ||
| likeLeft | ||
| likeRight | ||
| isNull | ||
| isNotNull | ||
| in | ||
| notLn |
3. Mybatis QueryWrapper入参为空时如何取消对应SQL的拼接?
背景: 项目应用中入参或有为空(为null)的情况,如果任然使用SQL查询会报数据检索异常.
为解决此问题最终得到此项解决办法,特此纪要!
问题: Mybatis QueryWrapper数据检索时入参为空如何取消SQL拼接?
例如: new QueryWrapper<>().eq("name",name);(此时那么的值为null)
解决办法: 使用eq(boolean,column,value)方法进行处理,第一个值为true才会进行拼接.
4. Mybatis QueryWrapper条件构造器如何处理同一个属性针对不同且多个值进行的数据检索?
背景: 项目中遇到此种情况,数据查询有缺失,解决后终觉好记性不如烂笔头,因而出此留笔.
问题: 面对同一个属性再不写SQL in的情况下,如何使用Mybatis QueryWrapper条件构造器进行数据检索?
解决办法:
首先列举一个普通的数据检索, 代码如下:
oooService.list(new QueryWrapper<entity>().eq("COLUMN",VAL).eq("CC_STATUS", "1");
上面的代码演示了我们在普通情况下的两个属性参数进行的查询.
此时,如果同一个属性可能存在不同情况的数据都需要检索时,应该如何处理?
为了更快的理解并解决问题, 依旧附上一段代码供参考, 如下:
oooService.list(new QueryWrapper<entity>()
.eq("COLUMN", VAL).eq("STATUS", "1").or().eq("STATUS", "2").or().eq("STATUS", "4")
.like(flag, "code", code)
);
更多推荐


所有评论(0)