**
当前环境信息 例如: Java17 + Mysql8.0
**
LambdaQueryWrapper
上述代码为参考官方示例
**//日志记录 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 **
提供问题复现工程(可选) 请尽量提供复现工程,减少大家排错的时间.
Comment From: nieqiurong
lambdaQueryWrapper1.columnToString(field) 将lambda转为字段.
Comment From: ZhangJunGuo1
columnToString我这个版本里面没有这个方法
Comment From: nieqiurong
Comment From: ZhangJunGuo1
感谢您的解答,这个问题已经解决了;
方案如下:
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