mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
fix code
This commit is contained in:
parent
31c5357409
commit
22933829e2
@ -4,6 +4,7 @@ import cn.hutool.core.map.MapUtil;
|
|||||||
import cn.hutool.core.text.StrUtil;
|
import cn.hutool.core.text.StrUtil;
|
||||||
import cn.hutool.core.util.ArrayUtil;
|
import cn.hutool.core.util.ArrayUtil;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -72,7 +73,7 @@ public class NamedSql {
|
|||||||
* @param paramMap 名和参数的对应Map
|
* @param paramMap 名和参数的对应Map
|
||||||
*/
|
*/
|
||||||
private void parse(final String namedSql, final Map<String, Object> paramMap) {
|
private void parse(final String namedSql, final Map<String, Object> paramMap) {
|
||||||
if(MapUtil.isEmpty(paramMap)){
|
if (MapUtil.isEmpty(paramMap)) {
|
||||||
this.sql = namedSql;
|
this.sql = namedSql;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -118,13 +119,13 @@ public class NamedSql {
|
|||||||
* 替换变量,如果无变量,原样输出到SQL中去
|
* 替换变量,如果无变量,原样输出到SQL中去
|
||||||
*
|
*
|
||||||
* @param nameStartChar 变量开始字符
|
* @param nameStartChar 变量开始字符
|
||||||
* @param name 变量名
|
* @param name 变量名
|
||||||
* @param sqlBuilder 结果SQL缓存
|
* @param sqlBuilder 结果SQL缓存
|
||||||
* @param paramMap 变量map(非空)
|
* @param paramMap 变量map(非空)
|
||||||
*/
|
*/
|
||||||
private void replaceVar(final Character nameStartChar, final StringBuilder name, final StringBuilder sqlBuilder, final Map<String, Object> paramMap){
|
private void replaceVar(final Character nameStartChar, final StringBuilder name, final StringBuilder sqlBuilder, final Map<String, Object> paramMap) {
|
||||||
if(name.length() == 0){
|
if (name.length() == 0) {
|
||||||
if(null != nameStartChar){
|
if (null != nameStartChar) {
|
||||||
// 类似于:的情况,需要补上:
|
// 类似于:的情况,需要补上:
|
||||||
sqlBuilder.append(nameStartChar);
|
sqlBuilder.append(nameStartChar);
|
||||||
}
|
}
|
||||||
@ -134,20 +135,25 @@ public class NamedSql {
|
|||||||
|
|
||||||
// 变量结束
|
// 变量结束
|
||||||
final String nameStr = name.toString();
|
final String nameStr = name.toString();
|
||||||
if(paramMap.containsKey(nameStr)) {
|
if (paramMap.containsKey(nameStr)) {
|
||||||
// 有变量对应值(值可以为null),替换占位符为?,变量值放入相应index位置
|
// 有变量对应值(值可以为null),替换占位符为?,变量值放入相应index位置
|
||||||
final Object paramValue = paramMap.get(nameStr);
|
Object paramValue = paramMap.get(nameStr);
|
||||||
if(ArrayUtil.isArray(paramValue) && StrUtil.containsIgnoreCase(sqlBuilder, "in")){
|
if ((paramValue instanceof Collection || ArrayUtil.isArray(paramValue)) && StrUtil.containsIgnoreCase(sqlBuilder, "in")) {
|
||||||
|
if (paramValue instanceof Collection) {
|
||||||
|
// 转为数组
|
||||||
|
paramValue = ((Collection<?>) paramValue).toArray();
|
||||||
|
}
|
||||||
|
|
||||||
// 可能为select in (xxx)语句,则拆分参数为多个参数,变成in (?,?,?)
|
// 可能为select in (xxx)语句,则拆分参数为多个参数,变成in (?,?,?)
|
||||||
final int length = ArrayUtil.length(paramValue);
|
final int length = ArrayUtil.length(paramValue);
|
||||||
for (int i = 0; i < length; i++) {
|
for (int i = 0; i < length; i++) {
|
||||||
if(0 != i){
|
if (0 != i) {
|
||||||
sqlBuilder.append(',');
|
sqlBuilder.append(',');
|
||||||
}
|
}
|
||||||
sqlBuilder.append('?');
|
sqlBuilder.append('?');
|
||||||
this.params.add(ArrayUtil.get(paramValue, i));
|
this.params.add(ArrayUtil.get(paramValue, i));
|
||||||
}
|
}
|
||||||
} else{
|
} else {
|
||||||
sqlBuilder.append('?');
|
sqlBuilder.append('?');
|
||||||
this.params.add(paramValue);
|
this.params.add(paramValue);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user