mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-20 10:13:28 +08:00
Pre Merge pull request !495 from AprilWind/dev
This commit is contained in:
commit
400385f482
@ -2,11 +2,11 @@ package org.dromara.common.mybatis.helper;
|
|||||||
|
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
|
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
|
||||||
|
import lombok.AccessLevel;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.utils.SpringUtils;
|
import org.dromara.common.core.utils.SpringUtils;
|
||||||
import org.dromara.common.mybatis.enums.DataBaseType;
|
import org.dromara.common.mybatis.enums.DataBaseType;
|
||||||
import lombok.AccessLevel;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
@ -14,7 +14,6 @@ import java.sql.DatabaseMetaData;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据库助手
|
* 数据库助手
|
||||||
@ -56,19 +55,38 @@ public class DataBaseHelper {
|
|||||||
return DataBaseType.SQL_SERVER == getDataBaseType();
|
return DataBaseType.SQL_SERVER == getDataBaseType();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据数据库类型生成用于判断值是否存在于以逗号分隔的字符串中的查询条件
|
||||||
|
*
|
||||||
|
* @param var1 要判断的值
|
||||||
|
* @param var2 逗号分隔的字符串
|
||||||
|
* @return 生成的查询条件字符串
|
||||||
|
*/
|
||||||
public static String findInSet(Object var1, String var2) {
|
public static String findInSet(Object var1, String var2) {
|
||||||
DataBaseType dataBasyType = getDataBaseType();
|
DataBaseType dataBasyType = getDataBaseType();
|
||||||
String var = Convert.toStr(var1);
|
String var = Convert.toStr(var1);
|
||||||
if (dataBasyType == DataBaseType.SQL_SERVER) {
|
if (dataBasyType == DataBaseType.SQL_SERVER) {
|
||||||
|
// 对于 SQL Server 数据库,使用 CHARINDEX 函数来判断
|
||||||
|
// CHARINDEX 函数用于查找一个字符串在另一个字符串中的位置
|
||||||
|
// 这里的查询条件表示查找 var1 是否存在于以逗号分隔的字符串 var2 中
|
||||||
// charindex(',100,' , ',0,100,101,') <> 0
|
// charindex(',100,' , ',0,100,101,') <> 0
|
||||||
return "charindex(',%s,' , ','+%s+',') <> 0".formatted(var, var2);
|
return "charindex(',%s,' , ','+%s+',') <> 0".formatted(var, var2);
|
||||||
} else if (dataBasyType == DataBaseType.POSTGRE_SQL) {
|
} else if (dataBasyType == DataBaseType.POSTGRE_SQL) {
|
||||||
|
// 对于 PostgreSQL 数据库,使用 POSITION 函数来判断
|
||||||
|
// POSITION 函数用于在一个字符串中查找另一个字符串,并返回其位置
|
||||||
|
// 这里的查询条件表示查找 var1 是否存在于以逗号分隔的字符串 var2 中
|
||||||
// (select position(',100,' in ',0,100,101,')) <> 0
|
// (select position(',100,' in ',0,100,101,')) <> 0
|
||||||
return "(select position(',%s,' in ','||%s||',')) <> 0".formatted(var, var2);
|
return "(select position(',%s,' in ','||%s||',')) <> 0".formatted(var, var2);
|
||||||
} else if (dataBasyType == DataBaseType.ORACLE) {
|
} else if (dataBasyType == DataBaseType.ORACLE) {
|
||||||
|
// 对于 Oracle 数据库,使用 INSTR 函数来判断
|
||||||
|
// INSTR 函数用于在一个字符串中查找另一个字符串,并返回其位置
|
||||||
|
// 这里的查询条件表示查找 var1 是否存在于以逗号分隔的字符串 var2 中
|
||||||
// instr(',0,100,101,' , ',100,') <> 0
|
// instr(',0,100,101,' , ',100,') <> 0
|
||||||
return "instr(','||%s||',' , ',%s,') <> 0".formatted(var2, var);
|
return "instr(','||%s||',' , ',%s,') <> 0".formatted(var2, var);
|
||||||
}
|
}
|
||||||
|
// 默认情况下(假设是 MySQL),使用 FIND_IN_SET 函数来判断
|
||||||
|
// FIND_IN_SET 函数用于在一个以逗号分隔的字符串中查找一个值,并返回其位置
|
||||||
|
// 这里的查询条件表示查找 var1 是否存在于以逗号分隔的字符串 var2 中
|
||||||
// find_in_set(100 , '0,100,101')
|
// find_in_set(100 , '0,100,101')
|
||||||
return "find_in_set('%s' , %s) <> 0".formatted(var, var2);
|
return "find_in_set('%s' , %s) <> 0".formatted(var, var2);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user