当前使用版本(必填,否则不予处理)
3.5.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
- 当我使用Lambda表达式去实现查询条件的时候引起的
- 因为我是参照的另一个项目 参照的项目使用 queryWrapper 发现没有任何问题 结果使用Lambda表达式的条件的时候发现有问题
QueryWrapper<Users> queryWrapper = new QueryWrapper<>();
LambdaQueryWrapper<Users> usersLambdaQueryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(userId!=null,"user_id",userId);
queryWrapper.like(CharSequenceUtil.isNotBlank(userName),"user_name",userName);
queryWrapper.eq(userPhoto!=null,"user_photo",userPhoto);
queryWrapper.eq(CharSequenceUtil.isNotBlank(userLevel),"user_level",userLevel);
queryWrapper.orderBy(SqlUtils.validSortField(sortField),
sortOrder.equals(CommonConstant.PAGE_SORT_ORDER_ASC.toString()), sortField);
usersLambdaQueryWrapper.orderBy(SqlUtils.validSortField(sortField),
sortOrder.equals(CommonConstant.PAGE_SORT_ORDER_ASC.toString()), sortField);
return queryWrapper;
重现步骤(如果有就写完整)
相同的语句 QueryWrapper可以 LambdaQueryWrapper 报错
报错信息
无法解析方法 'orderBy(boolean, boolean, String)' 通过改变不同的传参 也都是无法解析此方法
Comment From: conifercone
LambdaQueryWrapper的orderBy接收的是boolean,boolean,SFunction,你可以换成
usersLambdaQueryWrapper.orderBy(SqlUtils.validSortField(sortField), sortOrder.equals(CommonConstant.PAGE_SORT_ORDER_ASC.toString()), User::getSortField)
Comment From: conifercone
User::getSortField这个只是个比喻,应该是你sortField字段在User里面的get方法
Comment From: lizhe-0423
User::getSortField这个只是个比喻,应该是你sortField字段在User里面的get方法
你说的对 Lambda 应该采用::get的方式 是我大脑短路了 但是还有一个问题 那就是 lambda只能从前面指定的类型中去选择 也就是LambdaQueryWrapper< User > 但是 sortField 字段是从 String sortField = userSearchRequest.getSortField(); 获取到的 也就是说这样的情况下 Lambda 用不了啦 对吗?
Comment From: conifercone
User::getSortField这个只是个比喻,应该是你的sortField字段在User里面的get方法你说的对 Lambda 应该采用::get 的方式是我内部短路了但是还有一个问题那就是 lambda 只能从前面指定的类型中去选择 okLambdaQueryWrapper< User > 但是 sortField 字段是 from String sortField = userSearchRequest .getSortField(); 获取到这样的情况下 Lambda 用不了啦吗?
是的
Comment From: lizhe-0423
User::getSortField这个只是个比喻,应该是你的sortField字段在User里面的get方法你说的对 Lambda 应该采用::get 的方式是我内部短路了但是还有一个问题那就是 lambda 只能从前面指定的类型中去选择 okLambdaQueryWrapper< User > 但是 sortField 字段是 from String sortField = userSearchRequest .getSortField(); 获取到这样的情况下 Lambda 用不了啦吗?
是的
好的 谢谢