Commit 0ec7035d authored by 李秀明's avatar 李秀明

fix: SQL拼接错误处理

parent 80b2cbf5
...@@ -9,12 +9,10 @@ import org.apache.ibatis.plugin.*; ...@@ -9,12 +9,10 @@ import org.apache.ibatis.plugin.*;
import org.apache.ibatis.session.ResultHandler; import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds; import org.apache.ibatis.session.RowBounds;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.ReflectionUtils;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.HashMap; import java.util.*;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Properties;
@Component @Component
// 标志该类是一个拦截器 // 标志该类是一个拦截器
...@@ -64,28 +62,23 @@ public class PluginInterceptor implements Interceptor { ...@@ -64,28 +62,23 @@ public class PluginInterceptor implements Interceptor {
//执行结果 //执行结果
HashMap<String,Object> par = new LinkedHashMap<>(); HashMap<String,Object> par = new LinkedHashMap<>();
if(parameter instanceof HashMap) { if(parameter instanceof HashMap) {
par = (HashMap<String, Object>)((HashMap<?, ?>) parameter).get("paramMap"); par = (HashMap<String, Object>) parameter;
} }
LinkedHashMap<String,String> fieldsValue = (LinkedHashMap<String, String>) par.get("extraFields"); List<String> extraFields = (ArrayList< String>) par.get("extraFields");
Iterator<String> iterator = fieldsValue.keySet().stream().iterator();
LinkedHashMap<String,String> fieldsValue2 = (LinkedHashMap<String, String>) par.get("extraStrFilters"); List<String> extraStrFilters = (ArrayList<String>) par.get("extraStrFilters");
Iterator<String> iterator1 = fieldsValue2.keySet().stream().iterator();
while (iterator.hasNext()) { for (String field : extraFields) {
String next = iterator.next(); sql = sql.replaceFirst("_field", field);
sql = sql.replaceFirst("_field",next); }
} for (String filter : extraStrFilters) {
sql = sql.replaceFirst("_str", filter);
while (iterator1.hasNext()) {
String next = iterator1.next();
sql = sql.replaceFirst("_str",next);
} }
//通过反射修改sql语句 //通过反射修改sql语句
Field field = boundSql.getClass().getDeclaredField("sql"); Field field = boundSql.getClass().getDeclaredField("sql");
field.setAccessible(true); ReflectionUtils.makeAccessible(field);
field.set(boundSql, sql); field.set(boundSql, sql);
return executor.query(mappedStatement, parameter, rowBounds, resultHandler, cacheKey, boundSql); return executor.query(mappedStatement, parameter, rowBounds, resultHandler, cacheKey, boundSql);
} else { } else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment