当前使用版本(必填,否则不予处理)

3.5.2

该问题是如何引起的?(确定最新版也有问题再提!!!)

  1. 当我使用Lambda表达式去实现查询条件的时候引起的
  2. 因为我是参照的另一个项目 参照的项目使用 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)' 通过改变不同的传参 也都是无法解析此方法

1696819922717

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 用不了啦吗?

是的

好的 谢谢