12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package com.ruoyi.common.helper;
- import cn.hutool.core.convert.Convert;
- import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
- import com.ruoyi.common.enums.DataBaseType;
- import com.ruoyi.common.exception.ServiceException;
- import com.ruoyi.common.utils.spring.SpringUtils;
- import lombok.AccessLevel;
- import lombok.NoArgsConstructor;
- import javax.sql.DataSource;
- import java.sql.DatabaseMetaData;
- import java.sql.SQLException;
- /**
- * 数据库助手
- *
- * @author Lion Li
- */
- @NoArgsConstructor(access = AccessLevel.PRIVATE)
- public class DataBaseHelper {
- /**
- * 获取当前数据库类型
- */
- public static DataBaseType getDataBasyType() {
- DynamicRoutingDataSource ds = (DynamicRoutingDataSource) SpringUtils.getBean(DataSource.class);
- DataSource dataSource = ds.determineDataSource();
- try {
- DatabaseMetaData metaData = dataSource.getConnection().getMetaData();
- String databaseProductName = metaData.getDatabaseProductName();
- return DataBaseType.find(databaseProductName);
- } catch (SQLException e) {
- throw new ServiceException(e.getMessage());
- }
- }
- public static boolean isMySql() {
- return DataBaseType.MY_SQL == getDataBasyType();
- }
- public static boolean isOracle() {
- return DataBaseType.ORACLE == getDataBasyType();
- }
- public static boolean isPostgerSql() {
- return DataBaseType.POSTGRE_SQL == getDataBasyType();
- }
- public static boolean isSqlServer() {
- return DataBaseType.SQL_SERVER == getDataBasyType();
- }
- public static String findInSet(Object var1, String var2) {
- DataBaseType dataBasyType = getDataBasyType();
- String var = Convert.toStr(var1);
- if (dataBasyType == DataBaseType.SQL_SERVER) {
- // charindex(',100,' , ',0,100,101,') <> 0
- return "charindex('," + var + ",' , ','+" + var2 + "+',') <> 0";
- } else if (dataBasyType == DataBaseType.POSTGRE_SQL) {
- // (select position(',100,' in ',0,100,101,')) <> 0
- return "(select position('," + var + ",' in ','||" + var2 + "||',')) <> 0";
- } else if (dataBasyType == DataBaseType.ORACLE) {
- // instr(',0,100,101,' , ',100,') <> 0
- return "instr(','||" + var2 + "||',' , '," + var + ",') <> 0";
- }
- // find_in_set(100 , '0,100,101')
- return "find_in_set(" + var + " , " + var2 + ") <> 0";
- }
- }
|