├── README.md
├── Spring-boot-dms.iml
├── pom.xml
└── src
├── main
├── java
│ └── com
│ │ └── dms
│ │ ├── DmsApplication.java
│ │ ├── controller
│ │ └── TestController.java
│ │ ├── dynamicdatasource
│ │ ├── DynamicDataExeUtils.java
│ │ ├── DynamicDataSourceContextHolder.java
│ │ ├── DynamicDataSourceUtils.java
│ │ ├── DynamicSqlOptionTypeWithDruidControl.java
│ │ └── DynamicSqlSyntaxCheck.java
│ │ ├── entity
│ │ ├── CfDatasource.java
│ │ ├── DynamicSqlOptionTypeEntity.java
│ │ ├── MetaIndexEntity.java
│ │ ├── Result.java
│ │ ├── RsSqlExeRecord.java
│ │ ├── RsSqlExeResult.java
│ │ ├── SqlExeResult.java
│ │ ├── TableFieldEntity.java
│ │ ├── TableIndexEntity.java
│ │ └── TableInfoEntity.java
│ │ ├── enums
│ │ ├── DatasourceSearchTypeEnum.java
│ │ ├── DatasourceTypeEnum.java
│ │ ├── SqlExeRecordStatusEnum.java
│ │ ├── SqlExeResultStatusEnum.java
│ │ ├── SqlOptionTypeEnum.java
│ │ └── SqlSyntaxCheckResultEnum.java
│ │ ├── mapper
│ │ ├── CfDatasourceMapper.java
│ │ ├── RsSqlExeRecordMapper.java
│ │ └── RsSqlExeResultMapper.java
│ │ ├── service
│ │ ├── ISqlExeService.java
│ │ └── impl
│ │ │ └── SqlExeServiceImpl.java
│ │ └── utils
│ │ ├── DbUtils.java
│ │ └── PPStringUtils.java
└── resources
│ ├── application.yml
│ ├── mapper
│ ├── CfDatasourceMapper.xml
│ ├── RsSqlExeRecordMapper.xml
│ └── RsSqlExeResultMapper.xml
│ ├── mybatis-config.xml
│ ├── sql
│ └── sei-dms.sql
│ └── t
└── test
└── java
└── com
└── dms
└── DmsTest.java
/README.md:
--------------------------------------------------------------------------------
1 | 基于Springboot开发的数据库管理工具。
2 | 可在线查询数据库及其字段信息
3 | 完美执行DDL\DML语句,语句有修正功能
4 | 无权限等功能,可轻易移植于其他平台。
5 | 异步执行,性能强劲
6 |
--------------------------------------------------------------------------------
/Spring-boot-dms.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | org.springframework.boot
7 | spring-boot-starter-parent
8 | 1.5.10.RELEASE
9 |
10 |
11 | 4.0.0
12 |
13 |
14 | UTF-8
15 | 1.8
16 |
17 |
18 | Spring-boot-dms
19 |
20 |
21 |
22 | org.mybatis.spring.boot
23 | mybatis-spring-boot-starter
24 | 1.3.1
25 |
26 |
27 | org.springframework.boot
28 | spring-boot-starter-web
29 |
30 |
31 | mysql
32 | mysql-connector-java
33 | 8.0.11
34 |
35 |
36 | com.microsoft.sqlserver
37 | sqljdbc4
38 | 4.0
39 |
40 |
41 |
42 | org.springframework.boot
43 | spring-boot-starter-test
44 | test
45 |
46 |
47 | org.apache.commons
48 | commons-lang3
49 | 3.8.1
50 |
51 |
52 | org.springframework
53 | spring-jdbc
54 | 5.1.9.RELEASE
55 |
56 |
57 | com.alibaba
58 | druid-spring-boot-starter
59 | 1.1.10
60 |
61 |
62 | com.github.jsqlparser
63 | jsqlparser
64 | 1.4
65 |
66 |
67 | com.alibaba
68 | fastjson
69 | 1.2.46
70 |
71 |
72 |
73 | org.projectlombok
74 | lombok
75 | 1.18.10
76 | compile
77 |
78 |
79 |
80 |
81 | org.springframework.boot
82 | spring-boot-starter-test
83 | 2.2.6.RELEASE
84 | test
85 |
86 |
87 |
88 |
89 |
90 |
91 | org.springframework.boot
92 | spring-boot-maven-plugin
93 |
94 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/src/main/java/com/dms/DmsApplication.java:
--------------------------------------------------------------------------------
1 | package com.dms;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
6 | import org.springframework.boot.autoconfigure.SpringBootApplication;
7 | import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
8 | import org.springframework.boot.web.servlet.ServletComponentScan;
9 | import org.springframework.context.annotation.ComponentScan;
10 |
11 | /**
12 | * @author: Luo
13 | * @description:
14 | * @time: 2020/11/29 14:14
15 | * Modified By:
16 | */
17 | @SpringBootApplication
18 | @ServletComponentScan
19 | @MapperScan("com.dms.mapper")
20 | public class DmsApplication {
21 | public static void main(String[] args) {
22 | SpringApplication.run(DmsApplication.class, args);
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/com/dms/controller/TestController.java:
--------------------------------------------------------------------------------
1 | package com.dms.controller;
2 |
3 | import com.dms.entity.*;
4 | import com.dms.utils.DbUtils;
5 | import lombok.extern.slf4j.Slf4j;
6 | import org.apache.commons.lang3.StringUtils;
7 | import org.springframework.stereotype.Controller;
8 | import org.springframework.web.bind.annotation.PathVariable;
9 | import org.springframework.web.bind.annotation.RequestMapping;
10 |
11 | import java.util.List;
12 |
13 | /**
14 | * @author: Luo
15 | * @description:
16 | * @time: 2020/11/29 14:14
17 | * Modified By:
18 | */
19 | @Slf4j
20 | @Controller
21 | public class TestController {
22 | @RequestMapping(value = "/datasource/{id}/{db}/{table}/_info")
23 | public Object ajax_get_datasource_db_table_info(@PathVariable("id") Integer id, @PathVariable("db") String db, @PathVariable("table") String table) {
24 |
25 | Object response = new Object();
26 | try {
27 | CfDatasource datasource = CfDatasource.builder().id(1).ip("127.0.0.1").port(3306).username("root").password("123456").type(1).build();
28 | if (StringUtils.isNotEmpty(table) && table.indexOf(".") != -1) {
29 | table = table.substring(table.lastIndexOf(".") + 1);
30 | }
31 | List fieldList = DbUtils.getColumnNames(datasource.getId(), datasource.getIp(), datasource.getPort(), datasource.getUsername(), datasource.getPassword(), db, table, datasource.getType());
32 |
33 | List indexEntityList = DbUtils.getTableIndex(datasource.getId(), datasource.getIp(), datasource.getPort(), datasource.getUsername(), datasource.getPassword(), db, table, datasource.getType());
34 |
35 | TableInfoEntity tableInfoEntity = DbUtils.getTableInfo(datasource.getId(), datasource.getIp(), datasource.getPort(), datasource.getUsername(), datasource.getPassword(), db, datasource.getType(), table);
36 |
37 | } catch (Exception e) {
38 | log.error("获取数据库表详情接口异常:" + e);
39 | }
40 | return response;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/dms/dynamicdatasource/DynamicDataExeUtils.java:
--------------------------------------------------------------------------------
1 | package com.dms.dynamicdatasource;
2 |
3 | import com.dms.entity.DynamicSqlOptionTypeEntity;
4 | import com.dms.entity.SqlExeResult;
5 | import com.dms.enums.DatasourceTypeEnum;
6 | import org.springframework.jdbc.core.JdbcTemplate;
7 | import org.springframework.util.CollectionUtils;
8 |
9 | import java.util.*;
10 |
11 | /**
12 | *
13 | * @description: DML
14 | * @author: Luo
15 | * @time: 2020/11/30 19:21
16 | */
17 | public class DynamicDataExeUtils {
18 |
19 | /**
20 | * 执行DQL queryForList
21 | *
22 | * @param datasource
23 | * @param sql
24 | * @return
25 | */
26 | private static SqlExeResult>> queryForList(String datasource, String sql) {
27 |
28 | SqlExeResult>> result = SqlExeResult.>>builder().sql(sql).start_time(new Date()).build();
29 | JdbcTemplate jdbcTemplate = DynamicDataSourceContextHolder.getJdbcTemplate(datasource);
30 | try {
31 | List