Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lambdaQueryWrapper.allEq过滤器属性参数获取失败 #6294

Closed
ZhangJunGuo1 opened this issue Jun 29, 2024 · 4 comments
Closed

lambdaQueryWrapper.allEq过滤器属性参数获取失败 #6294

ZhangJunGuo1 opened this issue Jun 29, 2024 · 4 comments

Comments

@ZhangJunGuo1
Copy link

ZhangJunGuo1 commented Jun 29, 2024

**
com.baomidou
mybatis-plus-spring-boot3-starter
3.5.7

**

当前环境信息
例如: Java17 + Mysql8.0

**
LambdaQueryWrapper lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
lambdaQueryWrapper.allEq((field, value) -> {
System.out.println(field+","+value);
//field.contains("a");//编译报错Cannot resolve method 'contains' in 'SFunction'
return true;
},Map.of(User::getId, 1, User::getName, "老王")).eq(User::getAge, null);
userMapper.selectList(lambdaQueryWrapper1);
**

上述代码为参考官方示例

**//日志记录
org.example.springboot3.mybatisplus.service.UserService$$Lambda$1596/0x00000008014a60f8@290ca9d6,老王
org.example.springboot3.mybatisplus.service.UserService$$Lambda$1595/0x00000008014a5ea8@736098b5,1
[2024-06-29 22:44:45.941][http-nio-8080-exec-6][DEBUG]- org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:135) - ==> Preparing: SELECT id,name,age,email,status FROM user1
[2024-06-29 22:44:45.941][http-nio-8080-exec-6][DEBUG]- org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:135) - ==> Parameters:
[2024-06-29 22:44:45.943][http-nio-8080-exec-6][DEBUG]- org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:135) - <== Total: 15
**

提供问题复现工程(可选)
请尽量提供复现工程,减少大家排错的时间.

@nieqiurong
Copy link
Contributor

lambdaQueryWrapper1.columnToString(field) 将lambda转为字段.

@ZhangJunGuo1
Copy link
Author

columnToString我这个版本里面没有这个方法

@nieqiurong
Copy link
Contributor

image

@ZhangJunGuo1
Copy link
Author

感谢您的解答,这个问题已经解决了;
方案如下:
AbstractWrapper.columnsToString()的修饰符是protected,不能直接被我使用;
具体代码如下:
LambdaQueryWrapper<User> lambdaQueryWrapper1 = new LambdaQueryWrapper<>(); lambdaQueryWrapper1.allEq((field, value) -> { LambdaMeta meta = LambdaUtils.extract(field); String fieldName = PropertyNamer.methodToProperty(meta.getImplMethodName()); System.out.println(fieldName+","+value); return fieldName.contains("a"); },Map.of(User::getId, 1, User::getName, "老王")).eq(User::getAge, null); userMapper.selectList(lambdaQueryWrapper1);
日志输出:
name,老王 id,1 [2024-07-07 10:27:45.415][http-nio-8080-exec-8][DEBUG]- org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:135) - ==> Preparing: SELECT id,name,age,email,gender,status,create_time,update_time,deleted,other_info FROM user1 WHERE deleted=0 AND (name = ? AND age = ?) [2024-07-07 10:27:45.416][http-nio-8080-exec-8][DEBUG]- org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:135) - ==> Parameters: 老王(String), null

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants