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

3.3.2

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

在QueryWrapper 进行查询时,设置了多个条件。 如:

QueryWrapper<SpotCheckVO> queryWrapper = new QueryWrapper<>();  
 queryWrapper.eq("charge_user","张三");   
 queryWrapper.eq("is_deleted", 0); 
````

设置2个条件,在其他地方获取条件的个数,
如:

Map map = queryWrapper.getParamNameValuePairs(); System.out.println(map.size()); //size =0,这里获取的是空 if(map.size()==0){ queryWrapper.eq(“create_user”, "李四"); } String sql =queryWrapper.getTargetSql(); // 调用该方法后map才有值 System.out.println(map.size()); //size =3


源码:

protected final String formatSqlIfNeed(boolean need, String sqlStr, Object... params) { if (!need || StringUtils.isBlank(sqlStr)) { return null; } if (ArrayUtils.isNotEmpty(params)) { for (int i = 0; i < params.length; ++i) { String genParamName = Constants.WRAPPER_PARAM + paramNameSeq.incrementAndGet(); sqlStr = sqlStr.replace(String.format("{%s}", i), String.format(Constants.WRAPPER_PARAM_FORMAT, Constants.WRAPPER, genParamName)); paramNameValuePairs.put(genParamName, params[i]); } } return sqlStr; } ``` 只有在formatSqlIfNeed方法被调用时才会向paramNameValuePairs存值。

建议:

可否在添加条件的时候就把paramNameValuePairs里放值,这样方便随时判断条件的个数

重现步骤(如果有就写完整)

报错信息

Comment From: huayanYu

欢迎pr

Comment From: miemieYaho

不支持,这是java的流式操作