|
|
@ -1,16 +1,21 @@ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
package com.xujie.sys.datasource.config; |
|
|
package com.xujie.sys.datasource.config; |
|
|
|
|
|
|
|
|
import com.alibaba.druid.pool.DruidDataSource; |
|
|
import com.alibaba.druid.pool.DruidDataSource; |
|
|
import com.xujie.sys.datasource.properties.DataSourceProperties; |
|
|
import com.xujie.sys.datasource.properties.DataSourceProperties; |
|
|
|
|
|
import com.alibaba.druid.wall.WallConfig; |
|
|
|
|
|
import com.alibaba.druid.wall.WallFilter; |
|
|
|
|
|
|
|
|
import java.sql.SQLException; |
|
|
import java.sql.SQLException; |
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* DruidDataSource |
|
|
* DruidDataSource |
|
|
* |
|
|
* |
|
|
* |
|
|
|
|
|
|
|
|
* |
|
|
* @since 1.0.0 |
|
|
* @since 1.0.0 |
|
|
*/ |
|
|
*/ |
|
|
public class DynamicDataSourceFactory { |
|
|
public class DynamicDataSourceFactory { |
|
|
@ -36,6 +41,18 @@ public class DynamicDataSourceFactory { |
|
|
druidDataSource.setMaxOpenPreparedStatements(properties.getMaxOpenPreparedStatements()); |
|
|
druidDataSource.setMaxOpenPreparedStatements(properties.getMaxOpenPreparedStatements()); |
|
|
druidDataSource.setSharePreparedStatements(properties.isSharePreparedStatements()); |
|
|
druidDataSource.setSharePreparedStatements(properties.isSharePreparedStatements()); |
|
|
|
|
|
|
|
|
|
|
|
// 配置WallFilter,允许永真条件 - rqrq |
|
|
|
|
|
WallConfig wallConfig = new WallConfig(); |
|
|
|
|
|
wallConfig.setSelectWhereAlwayTrueCheck(false); // 禁用永真条件检查 |
|
|
|
|
|
wallConfig.setMultiStatementAllow(true); // 允许多语句 |
|
|
|
|
|
|
|
|
|
|
|
WallFilter wallFilter = new WallFilter(); |
|
|
|
|
|
wallFilter.setConfig(wallConfig); |
|
|
|
|
|
|
|
|
|
|
|
List<com.alibaba.druid.filter.Filter> filters = new ArrayList<>(); |
|
|
|
|
|
filters.add(wallFilter); |
|
|
|
|
|
druidDataSource.setProxyFilters(filters); |
|
|
|
|
|
|
|
|
try { |
|
|
try { |
|
|
druidDataSource.setFilters(properties.getFilters()); |
|
|
druidDataSource.setFilters(properties.getFilters()); |
|
|
druidDataSource.init(); |
|
|
druidDataSource.init(); |
|
|
@ -44,4 +61,4 @@ public class DynamicDataSourceFactory { |
|
|
} |
|
|
} |
|
|
return druidDataSource; |
|
|
return druidDataSource; |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |