Skip to content

Commit 65ce61c

Browse files
author
Weasley
committed
update.
1 parent 7af1528 commit 65ce61c

File tree

4 files changed

+91
-5
lines changed

4 files changed

+91
-5
lines changed

README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,6 +1003,41 @@ documents, so the comments for the created table are missing. If you want to syn
10031003
for `production environment` from `Dev environment` which created by `DTT`, then you can ignore to use`@Dtt`annotations
10041004
to annotate your domain objects,you can you some `RDB` tools.
10051005

1006+
### 10 Support calling API to create table
1007+
1008+
`API`: [cn.alphahub.dtt.plus.framework.miscellaneous.DttDefaultConditionalService#manualCreate](https://github.com/Weasley-J/mydtt-plus-spring-boot-starter/mydtt-plus-spring-boot-starter/src/main/java/cn/alphahub/dtt/plus/framework/miscellaneous/DttDefaultConditionalService.java#L57)
1009+
1010+
- Add the annotation `@EnableDtt` to the startup class of your `spring-boot` application
1011+
- i.e:
1012+
1013+
```java
1014+
import cn.alphahub.dtt.plus.entity.DttManualActEntity;
1015+
import cn.alphahub.dtt.plus.entity.DttManualActRequest;
1016+
import cn.alphahub.dtt.plus.framework.miscellaneous.DttDefaultConditionalService;
1017+
import org.springframework.beans.factory.annotation.Autowired;
1018+
import org.springframework.web.bind.annotation.PostMapping;
1019+
import org.springframework.web.bind.annotation.RequestBody;
1020+
import org.springframework.web.bind.annotation.RequestMapping;
1021+
import org.springframework.web.bind.annotation.RestController;
1022+
1023+
import java.util.List;
1024+
1025+
/**
1026+
* Some controller
1027+
*/
1028+
@RestController
1029+
@RequestMapping("/api/member")
1030+
public class SomeController {
1031+
@Autowired
1032+
private DttDefaultConditionalService defaultConditionalService;
1033+
1034+
@PostMapping("/manual/act")
1035+
public List<DttManualActEntity> manualCreateTable(@RequestBody DttManualActRequest request) {
1036+
return this.defaultConditionalService.manualCreate(request);
1037+
}
1038+
}
1039+
```
1040+
10061041
## Supported `RDB` type
10071042

10081043
| database | version | adaptation |

README_zh.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,42 @@ public class DttMember implements Serializable {
268268

269269
4. **该功能仅适用于受支持的`RDB`**
270270

271+
### 10 支持调用API创建表
272+
273+
`API`: [cn.alphahub.dtt.plus.framework.miscellaneous.DttDefaultConditionalService#manualCreate](https://github.com/Weasley-J/mydtt-plus-spring-boot-starter/mydtt-plus-spring-boot-starter/src/main/java/cn/alphahub/dtt/plus/framework/miscellaneous/DttDefaultConditionalService.java#L57)
274+
275+
1. 在你的`spring-boot`应用的启动类上添加注解`@EnableDtt`
276+
277+
2. 示例:
278+
279+
```java
280+
import cn.alphahub.dtt.plus.entity.DttManualActEntity;
281+
import cn.alphahub.dtt.plus.entity.DttManualActRequest;
282+
import cn.alphahub.dtt.plus.framework.miscellaneous.DttDefaultConditionalService;
283+
import org.springframework.beans.factory.annotation.Autowired;
284+
import org.springframework.web.bind.annotation.PostMapping;
285+
import org.springframework.web.bind.annotation.RequestBody;
286+
import org.springframework.web.bind.annotation.RequestMapping;
287+
import org.springframework.web.bind.annotation.RestController;
288+
289+
import java.util.List;
290+
291+
/**
292+
* Some controller
293+
*/
294+
@RestController
295+
@RequestMapping("/api/member")
296+
public class SomeController {
297+
@Autowired
298+
private DttDefaultConditionalService defaultConditionalService;
299+
300+
@PostMapping("/manual/act")
301+
public List<DttManualActEntity> manualCreateTable(@RequestBody DttManualActRequest request) {
302+
return this.defaultConditionalService.manualCreate(request);
303+
}
304+
}
305+
```
306+
271307
# 受支持的RDB
272308

273309
| 数据库 | 版本 | 适配情况 |

embedded-db/h2.mv.db

28 KB
Binary file not shown.

mydtt-plus-spring-boot-starter/src/main/java/cn/alphahub/dtt/plus/framework/core/DefaultOracleTableHandler.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package cn.alphahub.dtt.plus.framework.core;
22

3+
import cn.alphahub.dtt.plus.config.DttMybatisAutoConfiguration;
34
import cn.alphahub.dtt.plus.config.datamapper.OracleDataMapperProperties;
45
import cn.alphahub.dtt.plus.entity.ContextWrapper;
6+
import cn.alphahub.dtt.plus.entity.DatabaseProperty;
57
import cn.alphahub.dtt.plus.entity.ModelEntity;
68
import cn.alphahub.dtt.plus.framework.InitDttHandler;
79
import cn.alphahub.dtt.plus.framework.annotations.EnableDtt;
@@ -14,6 +16,7 @@
1416
import org.springframework.beans.factory.annotation.Autowired;
1517
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
1618
import org.springframework.boot.context.properties.EnableConfigurationProperties;
19+
import org.springframework.context.ApplicationContext;
1720
import org.springframework.dao.DataAccessException;
1821
import org.springframework.jdbc.core.JdbcTemplate;
1922
import org.springframework.stereotype.Component;
@@ -40,6 +43,8 @@ public class DefaultOracleTableHandler extends DttAggregationRunner implements D
4043
@Autowired
4144
private JdbcTemplate jdbcTemplate;
4245
@Autowired
46+
private ApplicationContext applicationContext;
47+
@Autowired
4348
private OracleDataMapperProperties oracleDataMapperProperties;
4449

4550
@Override
@@ -193,12 +198,22 @@ public boolean batchUpdate(String... sql) {
193198
* Get table exists or not
194199
*
195200
* @param tableName The name of table
196-
* @return Exists return true
201+
* @return if exists return true
197202
*/
198203
protected boolean isTableExists(String tableName) {
199-
String sql = "SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME = '" + tableName + "'";
200-
Integer result = jdbcTemplate.queryForObject(sql, Integer.class);
201-
if (null == result) return false;
202-
return result > 0;
204+
DttMybatisAutoConfiguration config = applicationContext.getBean(DttMybatisAutoConfiguration.class);
205+
DatabaseProperty dbProperty = applicationContext.getBean(DatabaseProperty.class);
206+
List<String> sqlScripts = config.getQueryTableExistsSqlScripts(tableName, dbProperty.getDatabaseType());
207+
for (String sql : sqlScripts) {
208+
try {
209+
Integer exists = jdbcTemplate.queryForObject(sql, Integer.class);
210+
if (null != exists && exists > 0) {
211+
return true;
212+
}
213+
} catch (DataAccessException ignored) {
214+
//No dump
215+
}
216+
}
217+
return false;
203218
}
204219
}

0 commit comments

Comments
 (0)