From ad246b507cff66d69bf15c680aaf38b7c706d3cf Mon Sep 17 00:00:00 2001 From: mxd <838425805@qq.com> Date: Tue, 10 Aug 2021 20:36:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=AA=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=90=E6=97=B6=E6=97=A0=E6=B3=95=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../starter/MagicAPIAutoConfiguration.java | 9 +++------ .../ssssssss/magicapi/modules/SQLModule.java | 19 +++++++++++++++++-- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIAutoConfiguration.java b/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIAutoConfiguration.java index 1da389d7..db246c41 100644 --- a/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIAutoConfiguration.java +++ b/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIAutoConfiguration.java @@ -230,9 +230,6 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer, WebSocketCon throw new MagicAPIException("当前未配置数据源,如已配置,请引入 spring-boot-starter-jdbc 后在试!"); } MagicDynamicDataSource.DataSourceNode dataSourceNode = magicDynamicDataSource.getDataSource(resourceConfig.getDatasource()); - if (dataSourceNode == null) { - throw new IllegalArgumentException(String.format("找不到数据源:%s", resourceConfig.getDatasource())); - } return new DatabaseResource(new JdbcTemplate(dataSourceNode.getDataSource()), resourceConfig.getTableName(), resourceConfig.getPrefix(), resourceConfig.isReadonly()); } @@ -250,9 +247,6 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer, WebSocketCon public MagicBackupService magicDatabaseBackupService(MagicDynamicDataSource magicDynamicDataSource) { BackupConfig backupConfig = properties.getBackupConfig(); MagicDynamicDataSource.DataSourceNode dataSourceNode = magicDynamicDataSource.getDataSource(backupConfig.getDatasource()); - if (dataSourceNode == null) { - throw new IllegalArgumentException(String.format("找不到数据源:%s", backupConfig.getDatasource())); - } return new MagicDatabaseBackupService(new JdbcTemplate(dataSourceNode.getDataSource()), backupConfig.getTableName()); } @@ -408,6 +402,9 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer, WebSocketCon PageProvider pageProvider, SqlCache sqlCache) { SQLModule sqlModule = new SQLModule(dynamicDataSource); + if(!dynamicDataSource.isEmpty()){ + sqlModule.setDataSourceNode(dynamicDataSource.getDataSource()); + } sqlModule.setResultProvider(resultProvider); sqlModule.setPageProvider(pageProvider); sqlModule.setSqlInterceptors(sqlInterceptorsProvider.getIfAvailable(Collections::emptyList)); diff --git a/magic-api/src/main/java/org/ssssssss/magicapi/modules/SQLModule.java b/magic-api/src/main/java/org/ssssssss/magicapi/modules/SQLModule.java index 25624deb..6235e1a3 100644 --- a/magic-api/src/main/java/org/ssssssss/magicapi/modules/SQLModule.java +++ b/magic-api/src/main/java/org/ssssssss/magicapi/modules/SQLModule.java @@ -73,7 +73,6 @@ public class SQLModule extends HashMap implements MagicModule public SQLModule(MagicDynamicDataSource dynamicDataSource) { this.dynamicDataSource = dynamicDataSource; - this.dataSourceNode = dynamicDataSource.getDataSource(); } @UnableCall @@ -115,7 +114,8 @@ public class SQLModule extends HashMap implements MagicModule this.sqlInterceptors = sqlInterceptors; } - private void setDataSourceNode(DataSourceNode dataSourceNode) { + @UnableCall + public void setDataSourceNode(DataSourceNode dataSourceNode) { this.dataSourceNode = dataSourceNode; } @@ -290,9 +290,16 @@ public class SQLModule extends HashMap implements MagicModule @UnableCall public List> select(BoundSql boundSql) { + assertDatasourceNotNull(); return boundSql.getCacheValue(this.sqlInterceptors, () -> dataSourceNode.getJdbcTemplate().query(boundSql.getSql(), this.columnMapRowMapper, boundSql.getParameters())); } + private void assertDatasourceNotNull(){ + if(dataSourceNode == null){ + throw new NullPointerException("当前数据源未设置"); + } + } + /** * 执行update */ @@ -303,6 +310,7 @@ public class SQLModule extends HashMap implements MagicModule @UnableCall public int update(BoundSql boundSql) { + assertDatasourceNotNull(); sqlInterceptors.forEach(sqlInterceptor -> sqlInterceptor.preHandle(boundSql, RequestContext.getRequestEntity())); int value = dataSourceNode.getJdbcTemplate().update(boundSql.getSql(), boundSql.getParameters()); if (this.cacheName != null) { @@ -330,6 +338,7 @@ public class SQLModule extends HashMap implements MagicModule } void insert(BoundSql boundSql, MagicKeyHolder keyHolder) { + assertDatasourceNotNull(); sqlInterceptors.forEach(sqlInterceptor -> sqlInterceptor.preHandle(boundSql, RequestContext.getRequestEntity())); dataSourceNode.getJdbcTemplate().update(con -> { PreparedStatement ps = keyHolder.createPrepareStatement(con, boundSql.getSql()); @@ -346,6 +355,7 @@ public class SQLModule extends HashMap implements MagicModule */ @Comment("批量执行insert操作,返回插入主键数组") public int[] batchInsert(@Comment("`SQL`语句") String sql, @Comment("参数") List list) { + assertDatasourceNotNull(); return dataSourceNode.getJdbcTemplate().batchUpdate(sql, list); } @@ -354,6 +364,7 @@ public class SQLModule extends HashMap implements MagicModule */ @Comment("批量执行insert操作,返回插入主键数组") public int[] batchInsert(@Comment("`SQL`语句") String[] sqls) { + assertDatasourceNotNull(); return dataSourceNode.getJdbcTemplate().batchUpdate(sqls); } @@ -388,6 +399,7 @@ public class SQLModule extends HashMap implements MagicModule } private Object page(BoundSql boundSql, Page page) { + assertDatasourceNotNull(); Dialect dialect = dataSourceNode.getDialect(dialectAdapter); BoundSql countBoundSql = boundSql.copy(dialect.getCountSql(boundSql.getSql())); int count = countBoundSql.getCacheValue(this.sqlInterceptors, () -> dataSourceNode.getJdbcTemplate().query(countBoundSql.getSql(), new SingleRowResultSetExtractor<>(Integer.class), countBoundSql.getParameters())); @@ -410,6 +422,7 @@ public class SQLModule extends HashMap implements MagicModule @UnableCall public Integer selectInt(BoundSql boundSql) { + assertDatasourceNotNull(); return boundSql.getCacheValue(this.sqlInterceptors, () -> dataSourceNode.getJdbcTemplate().query(boundSql.getSql(), new SingleRowResultSetExtractor<>(Integer.class), boundSql.getParameters())); } @@ -423,6 +436,7 @@ public class SQLModule extends HashMap implements MagicModule @UnableCall public Map selectOne(BoundSql boundSql) { + assertDatasourceNotNull(); return boundSql.getCacheValue(this.sqlInterceptors, () -> { Dialect dialect = dataSourceNode.getDialect(dialectAdapter); BoundSql pageBoundSql = buildPageBoundSql(dialect, boundSql, 0, 1); @@ -435,6 +449,7 @@ public class SQLModule extends HashMap implements MagicModule */ @Comment("查询单行单列的值") public Object selectValue(@Comment("`SQL`语句") String sql) { + assertDatasourceNotNull(); BoundSql boundSql = new BoundSql(sql, this); return boundSql.getCacheValue(this.sqlInterceptors, () -> { Dialect dialect = dataSourceNode.getDialect(dialectAdapter);