遇到的问题
sql查询语句
多种嵌套查询 根据公司名称(必填),设备类型(选填) 还有搜索框->{编号或名称}(选填)
搜索框 like查询 or 连接 编号和名称 得作为一个判断条件
错误写法
@PostMapping("/getDeviceList")
@ApiOperation("获取设备list信息")
public CommonResult<List<TfDevice>> getDeviceList(@RequestBody ToListVO toListVO){
QueryWrapper<TfDevice> tfDeviceQueryWrapper = new QueryWrapper<>();
tfDeviceQueryWrapper
.select("id","dev_name","dev_state","number","dev_place","dev_price")
.eq("company_name",toListVO.getCompanyName())
.ne("dev_state",SystemConstant.NUM_TWO)
.eq(!StrUtil.isEmpty(toListVO.getCategory()),"dev_category",toListVO.getCategory())
.like(!StrUtil.isEmpty(toListVO.getQueryKey()),"number",toListVO.getQueryKey())
//这里加or 相当于 前面全部作为一个条件 后面一个like 也作为一个条件
.or()
.like(!StrUtil.isEmpty(toListVO.getQueryKey()),"dev_name",toListVO.getQueryKey())
.orderByDesc("create_time");
return process(()-> page(toListVO.getPageNum(),tfDeviceQueryWrapper));
}
解决方案
@Autowired
private TfDeviceService tfDeviceService;
/**
* 查询列表进行分页
* @param pageNum 分页类
* @param queryWrapper 查询条件
* @author zhangsan
* @return
*/
public List<TfDevice> page(PageInfoVO pageNum, @Param("ew") Wrapper<TfDevice> queryWrapper){
Page<TfDevice> categoryPage = new Page<>(pageNum.getPageNum(), pageNum.getPageSize());
Page<TfDevice> info =tfDeviceService.page(categoryPage,queryWrapper);
return info.getRecords();
}
@PostMapping("/getDeviceList")
@ApiOperation("获取设备list信息")
public CommonResult<List<TfDevice>> getDeviceList(@RequestBody ToListVO toListVO){
QueryWrapper<TfDevice> tfDeviceQueryWrapper = new QueryWrapper<>();
tfDeviceQueryWrapper
.select("id","dev_name","dev_state","number","dev_place","dev_price")
.eq("company_name",toListVO.getCompanyName())
.ne("dev_state",SystemConstant.NUM_TWO)
.eq(!StrUtil.isEmpty(toListVO.getCategory()),"dev_category",toListVO.getCategory())
//and 里面嵌套wrapper语句 就可以实现括号效果
.and(!StrUtil.isEmpty(toListVO.getQueryKey()),tfDeviceQueryWrapper1->tfDeviceQueryWrapper1
.like("number",toListVO.getQueryKey())
.or()
.like("dev_name",toListVO.getQueryKey()))
.orderByDesc("create_time");
return process(()-> page(toListVO.getPageNum(),tfDeviceQueryWrapper));
}