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

3.4.2

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

部分场景需要获取到最终的sql用于持久化,目前想要实现这个效果只能后置处理,相对比较麻烦,是否可以另外提供方法实现直接得到最终sql 例如: wrapper.in("a",1,2,3) 目前只能得到 结果是 WHERE (a IN (#{ew.paramNameValuePairs.MPGENVAL1},#{ew.paramNameValuePairs.MPGENVAL2},#{ew.paramNameValuePairs.MPGENVAL3})) 实际想得到结果是 WHERE (a IN (1,2,3))

或者源码中com.baomidou.mybatisplus.core.conditions.AbstractWrapper#formatSql是否可以不定义成final的, 可供用户通过继承来做自定义完成需求

Comment From: beichenhpy

我之前写过个提取sql的,希望能帮到你。。可能写的不太好。。

//获取targetSql ex: (org_code like ?)
String targetSql = queryWrapper.getTargetSql();
//把条件从QueryWrapper中取出来 {nwvalue1:xxx} 这里只有getTargetSql后才会有值
Map<String, Object> paramNameValuePairs = queryWrapper.getParamNameValuePairs();
Collection<Object> values = paramNameValuePairs.values();
for (Object value : values) {
    //替换?为 'value'
    targetSql = targetSql.replace("?", "'" + value + "'");
}

Comment From: qmdx

我之前写过个提取sql的,希望能帮到你。。可能写的不太好。。

java //获取targetSql ex: (org_code like ?) String targetSql = queryWrapper.getTargetSql(); //把条件从QueryWrapper中取出来 {nwvalue1:xxx} 这里只有getTargetSql后才会有值 Map<String, Object> paramNameValuePairs = queryWrapper.getParamNameValuePairs(); Collection<Object> values = paramNameValuePairs.values(); for (Object value : values) { //替换?为 'value' targetSql = targetSql.replace("?", "'" + value + "'"); } 原始 sql 如果不涉及对象类型这样处理可以的,需要注意数据类型

Comment From: silloy

values 顺序有问题