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)
);

 

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐