Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dlink
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhaowei
dlink
Commits
c13a0618
Commit
c13a0618
authored
Jul 20, 2021
by
godkaikai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
metadata-mysql
parent
1343462e
Changes
27
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
965 additions
and
25 deletions
+965
-25
README.md
README.md
+5
-1
SpringContextUtils.java
...n/src/main/java/com/dlink/context/SpringContextUtils.java
+1
-1
StudioCADTO.java
dlink-admin/src/main/java/com/dlink/dto/StudioCADTO.java
+1
-1
Asserts.java
dlink-common/src/main/java/com/dlink/assertion/Asserts.java
+14
-2
Column.java
dlink-common/src/main/java/com/dlink/model/Column.java
+4
-8
pom.xml
dlink-core/pom.xml
+0
-2
CABuilder.java
...-core/src/main/java/com/dlink/explainer/ca/CABuilder.java
+1
-1
ColumnCANode.java
...re/src/main/java/com/dlink/explainer/ca/ColumnCANode.java
+1
-1
TableCANode.java
...ore/src/main/java/com/dlink/explainer/ca/TableCANode.java
+1
-1
dlink.sql
dlink-doc/sql/dlink.sql
+26
-1
ITypeConvert.java
...rc/main/java/com/dlink/metadata/convert/ITypeConvert.java
+61
-0
AbstractDriver.java
...c/main/java/com/dlink/metadata/driver/AbstractDriver.java
+49
-0
AbstractJdbcDriver.java
...in/java/com/dlink/metadata/driver/AbstractJdbcDriver.java
+204
-0
Driver.java
...-base/src/main/java/com/dlink/metadata/driver/Driver.java
+11
-5
DriverConfig.java
...src/main/java/com/dlink/metadata/driver/DriverConfig.java
+2
-1
AbstractDBQuery.java
...c/main/java/com/dlink/metadata/query/AbstractDBQuery.java
+23
-0
IDBQuery.java
...base/src/main/java/com/dlink/metadata/query/IDBQuery.java
+75
-0
DbColumnType.java
.../src/main/java/com/dlink/metadata/rules/DbColumnType.java
+78
-0
IColumnType.java
...e/src/main/java/com/dlink/metadata/rules/IColumnType.java
+18
-0
pom.xml
dlink-metadata/dlink-metadata-mysql/pom.xml
+29
-0
MySqlTypeConvert.java
...ain/java/com/dlink/metadata/convert/MySqlTypeConvert.java
+68
-0
MySqlDriver.java
.../src/main/java/com/dlink/metadata/driver/MySqlDriver.java
+127
-0
MySqlQuery.java
...ql/src/main/java/com/dlink/metadata/query/MySqlQuery.java
+88
-0
com.dlink.metadata.driver.Driver
...ources/META-INF/services/com.dlink.metadata.driver.Driver
+1
-0
MysqlTest.java
...ata-mysql/src/test/java/com/dlink/metadata/MysqlTest.java
+64
-0
pom.xml
dlink-metadata/pom.xml
+1
-0
pom.xml
pom.xml
+12
-0
No files found.
README.md
View file @
c13a0618
...
@@ -139,6 +139,7 @@ dlink -- 父项目
...
@@ -139,6 +139,7 @@ dlink -- 父项目
|-
dlink
-
client
--
Client
中心
|-
dlink
-
client
--
Client
中心
|
|-
dlink
-
client
-
1.12
--
Client
-
1.12
实现
|
|-
dlink
-
client
-
1.12
--
Client
-
1.12
实现
|
|-
dlink
-
client
-
1.13
--
Client
-
1.13
实现
|
|-
dlink
-
client
-
1.13
--
Client
-
1.13
实现
|-
dlink
-
common
--
通用中心
|-
dlink
-
connectors
--
Connectors
中心
|-
dlink
-
connectors
--
Connectors
中心
|
|-
dlink
-
connector
-
jdbc
--
Jdbc
扩展
|
|-
dlink
-
connector
-
jdbc
--
Jdbc
扩展
|-
dlink
-
core
--
执行中心
|-
dlink
-
core
--
执行中心
...
@@ -149,6 +150,9 @@ dlink -- 父项目
...
@@ -149,6 +150,9 @@ dlink -- 父项目
|
|-
doc
--
使用文档
|
|-
doc
--
使用文档
|
|-
sql
--
sql
脚本
|
|-
sql
--
sql
脚本
|-
dlink
-
function
--
函数中心
|-
dlink
-
function
--
函数中心
|-
dlink
-
metadata
--
元数据中心
|
|-
dlink
-
metadata
-
base
--
元数据基础组件
|
|-
dlink
-
metadata
-
mysql
--
元数据
-
mysql
实现
|-
dlink
-
web
--
React
前端
|-
dlink
-
web
--
React
前端
```
```
...
@@ -163,7 +167,7 @@ npm run build
...
@@ -163,7 +167,7 @@ npm run build
#### 后台编译打包
#### 后台编译打包
```
shell
```
shell
m
ave
n clean
install
-Dmaven
.test.skip
=
true
m
v
n clean
install
-Dmaven
.test.skip
=
true
```
```
#### 扩展Connector及UDF
#### 扩展Connector及UDF
...
...
dlink-admin/src/main/java/com/dlink/context/SpringContextUtils.java
View file @
c13a0618
...
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
...
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
/**
/**
* SpringContextUtils
* SpringContextUtils
*
*
* @author
qiwenkai
* @author
wenmo
* @since 2021/6/29 15:36
* @since 2021/6/29 15:36
**/
**/
@Component
@Component
...
...
dlink-admin/src/main/java/com/dlink/dto/StudioCADTO.java
View file @
c13a0618
...
@@ -6,7 +6,7 @@ import lombok.Setter;
...
@@ -6,7 +6,7 @@ import lombok.Setter;
/**
/**
* StudioCADTO
* StudioCADTO
*
*
* @author
qiwenkai
* @author
wenmo
* @since 2021/6/23 14:00
* @since 2021/6/23 14:00
**/
**/
@Getter
@Getter
...
...
dlink-common/src/main/java/com/dlink/assertion/Asserts.java
View file @
c13a0618
package
com
.
dlink
.
assertion
;
package
com
.
dlink
.
assertion
;
import
com.dlink.exception.RunTimeException
;
/**
/**
* Asserts
* Asserts
*
*
...
@@ -20,6 +22,10 @@ public class Asserts {
...
@@ -20,6 +22,10 @@ public class Asserts {
return
isNull
(
str
)||
""
.
equals
(
str
);
return
isNull
(
str
)||
""
.
equals
(
str
);
}
}
public
static
boolean
isNotNullString
(
String
str
){
return
!
isNullString
(
str
);
}
public
static
boolean
isEquals
(
String
str1
,
String
str2
){
public
static
boolean
isEquals
(
String
str1
,
String
str2
){
if
(
isNull
(
str1
)&&
isNull
(
str2
)){
if
(
isNull
(
str1
)&&
isNull
(
str2
)){
return
true
;
return
true
;
...
@@ -42,13 +48,19 @@ public class Asserts {
...
@@ -42,13 +48,19 @@ public class Asserts {
public
static
void
checkNull
(
String
key
,
String
msg
)
{
public
static
void
checkNull
(
String
key
,
String
msg
)
{
if
(
key
==
null
||
""
.
equals
(
key
))
{
if
(
key
==
null
||
""
.
equals
(
key
))
{
throw
new
NullPointer
Exception
(
msg
);
throw
new
RunTime
Exception
(
msg
);
}
}
}
}
public
static
void
checkNotNull
(
Object
object
,
String
msg
)
{
public
static
void
checkNotNull
(
Object
object
,
String
msg
)
{
if
(
isNull
(
object
))
{
if
(
isNull
(
object
))
{
throw
new
NullPointerException
(
msg
);
throw
new
RunTimeException
(
msg
);
}
}
public
static
void
checkNullString
(
String
key
,
String
msg
)
{
if
(
isNull
(
key
)||
isEquals
(
""
,
key
))
{
throw
new
RunTimeException
(
msg
);
}
}
}
}
...
...
dlink-common/src/main/java/com/dlink/model/Column.java
View file @
c13a0618
...
@@ -17,21 +17,17 @@ public class Column implements Serializable {
...
@@ -17,21 +17,17 @@ public class Column implements Serializable {
private
static
final
long
serialVersionUID
=
6438514547501611599L
;
private
static
final
long
serialVersionUID
=
6438514547501611599L
;
private
boolean
convert
;
private
String
name
;
private
String
type
;
private
String
comment
;
private
boolean
keyFlag
;
private
boolean
keyFlag
;
/**
/**
* 主键是否为自增类型
* 主键是否为自增类型
*/
*/
private
boolean
keyIdentityFlag
;
private
boolean
keyIdentityFlag
;
private
String
name
;
private
String
type
;
private
String
propertyName
;
private
String
columnType
;
private
String
comment
;
private
String
fill
;
private
String
fill
;
private
String
isNotNull
;
private
String
isNotNull
;
private
boolean
keyWords
;
private
String
javaType
;
private
String
columnName
;
private
String
columnFamily
;
private
String
columnFamily
;
}
}
\ No newline at end of file
dlink-core/pom.xml
View file @
c13a0618
...
@@ -16,7 +16,6 @@
...
@@ -16,7 +16,6 @@
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<maven.compiler.source>
1.8
</maven.compiler.source>
<maven.compiler.source>
1.8
</maven.compiler.source>
<maven.compiler.target>
1.8
</maven.compiler.target>
<maven.compiler.target>
1.8
</maven.compiler.target>
<junit.version>
4.12
</junit.version>
</properties>
</properties>
<dependencies>
<dependencies>
...
@@ -31,7 +30,6 @@
...
@@ -31,7 +30,6 @@
<dependency>
<dependency>
<groupId>
junit
</groupId>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<artifactId>
junit
</artifactId>
<version>
${junit.version}
</version>
<scope>
provided
</scope>
<scope>
provided
</scope>
</dependency>
</dependency>
<dependency>
<dependency>
...
...
dlink-core/src/main/java/com/dlink/explainer/ca/CABuilder.java
View file @
c13a0618
...
@@ -9,7 +9,7 @@ import java.util.Set;
...
@@ -9,7 +9,7 @@ import java.util.Set;
/**
/**
* CABuilder
* CABuilder
*
*
* @author
qiwenkai
* @author
wenmo
* @since 2021/6/23 11:03
* @since 2021/6/23 11:03
**/
**/
public
class
CABuilder
{
public
class
CABuilder
{
...
...
dlink-core/src/main/java/com/dlink/explainer/ca/ColumnCANode.java
View file @
c13a0618
...
@@ -9,7 +9,7 @@ import java.util.List;
...
@@ -9,7 +9,7 @@ import java.util.List;
/**
/**
* ColumnCANode
* ColumnCANode
*
*
* @author
qiwenkai
* @author
wenmo
* @since 2021/6/23 11:03
* @since 2021/6/23 11:03
**/
**/
@Getter
@Getter
...
...
dlink-core/src/main/java/com/dlink/explainer/ca/TableCANode.java
View file @
c13a0618
...
@@ -9,7 +9,7 @@ import java.util.List;
...
@@ -9,7 +9,7 @@ import java.util.List;
/**
/**
* TableCANode
* TableCANode
*
*
* @author
qiwenkai
* @author
wenmo
* @since 2021/6/23 11:03
* @since 2021/6/23 11:03
**/
**/
@Getter
@Getter
...
...
dlink-doc/sql/dlink.sql
View file @
c13a0618
...
@@ -67,7 +67,7 @@ CREATE TABLE `dlink_task` (
...
@@ -67,7 +67,7 @@ CREATE TABLE `dlink_task` (
`check_point`
int
(
11
)
NULL
DEFAULT
NULL
COMMENT
'CheckPoint '
,
`check_point`
int
(
11
)
NULL
DEFAULT
NULL
COMMENT
'CheckPoint '
,
`save_point_path`
varchar
(
255
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NULL
DEFAULT
NULL
COMMENT
'SavePointPath'
,
`save_point_path`
varchar
(
255
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NULL
DEFAULT
NULL
COMMENT
'SavePointPath'
,
`parallelism`
int
(
4
)
NULL
DEFAULT
NULL
COMMENT
'parallelism'
,
`parallelism`
int
(
4
)
NULL
DEFAULT
NULL
COMMENT
'parallelism'
,
`fragment`
tinyint
(
255
)
NULL
DEFAULT
NULL
COMMENT
'fragment'
,
`fragment`
tinyint
(
1
)
NULL
DEFAULT
NULL
COMMENT
'fragment'
,
`cluster_id`
int
(
11
)
NULL
DEFAULT
NULL
COMMENT
'Flink集群ID'
,
`cluster_id`
int
(
11
)
NULL
DEFAULT
NULL
COMMENT
'Flink集群ID'
,
`note`
varchar
(
255
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NULL
DEFAULT
NULL
COMMENT
'注释'
,
`note`
varchar
(
255
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NULL
DEFAULT
NULL
COMMENT
'注释'
,
`enabled`
tinyint
(
1
)
NOT
NULL
DEFAULT
1
COMMENT
'是否启用'
,
`enabled`
tinyint
(
1
)
NOT
NULL
DEFAULT
1
COMMENT
'是否启用'
,
...
@@ -331,4 +331,29 @@ CREATE TABLE `dlink_history` (
...
@@ -331,4 +331,29 @@ CREATE TABLE `dlink_history` (
ALTER
TABLE
`dlink`
.
`dlink_task`
ALTER
TABLE
`dlink`
.
`dlink_task`
ADD
COLUMN
`config`
text
NULL
COMMENT
'配置'
AFTER
`cluster_id`
;
ADD
COLUMN
`config`
text
NULL
COMMENT
'配置'
AFTER
`cluster_id`
;
-- ----------------------------
-- Table structure for dlink_database
-- ----------------------------
DROP
TABLE
IF
EXISTS
`dlink_database`
;
CREATE
TABLE
`dlink_database`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
COMMENT
'ID'
,
`name`
varchar
(
30
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NOT
NULL
COMMENT
'数据源名'
,
`alias`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NOT
NULL
COMMENT
'数据源标题'
,
`group_name`
varchar
(
255
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NULL
DEFAULT
'Default'
COMMENT
'数据源分组'
,
`type`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NOT
NULL
COMMENT
'类型'
,
`driver_class_name`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NULL
DEFAULT
NULL
COMMENT
'Driver'
,
`ip`
varchar
(
255
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NULL
DEFAULT
NULL
COMMENT
'IP'
,
`port`
int
(
11
)
NULL
DEFAULT
NULL
COMMENT
'端口号'
,
`url`
varchar
(
255
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NULL
DEFAULT
NULL
COMMENT
'url'
,
`username`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NULL
DEFAULT
NULL
COMMENT
'用户名'
,
`password`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NULL
DEFAULT
NULL
COMMENT
'密码'
,
`note`
varchar
(
255
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NULL
DEFAULT
NULL
COMMENT
'注释'
,
`db_version`
varchar
(
255
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NULL
DEFAULT
NULL
COMMENT
'版本,如oracle的11g,hbase的2.2.3'
,
`enabled`
tinyint
(
1
)
NOT
NULL
DEFAULT
1
COMMENT
'启用'
,
`create_time`
datetime
(
0
)
NULL
DEFAULT
NULL
COMMENT
'创建时间'
,
`update_time`
datetime
(
0
)
NULL
DEFAULT
NULL
COMMENT
'最近修改时间'
,
PRIMARY
KEY
(
`id`
)
USING
BTREE
,
UNIQUE
INDEX
`db_index`
(
`name`
)
USING
BTREE
)
ENGINE
=
InnoDB
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
ROW_FORMAT
=
Dynamic
;
SET
FOREIGN_KEY_CHECKS
=
1
;
SET
FOREIGN_KEY_CHECKS
=
1
;
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/convert/ITypeConvert.java
0 → 100644
View file @
c13a0618
package
com
.
dlink
.
metadata
.
convert
;
import
com.dlink.metadata.rules.IColumnType
;
import
com.dlink.model.Column
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
/**
* ITypeConvert
*
* @author wenmo
* @since 2021/7/20 14:39
**/
public
interface
ITypeConvert
{
default
IColumnType
convert
(
Column
column
)
{
return
convert
(
column
.
getType
());
}
default
String
convertToDB
(
Column
column
)
{
return
convertToDB
(
column
.
getJavaType
());
}
IColumnType
convert
(
String
columnType
);
String
convertToDB
(
String
columnType
);
default
Object
convertValue
(
ResultSet
results
,
String
columnName
,
String
javaType
)
throws
SQLException
{
switch
(
javaType
.
toLowerCase
())
{
case
"string"
:
return
results
.
getString
(
columnName
);
case
"double"
:
return
results
.
getDouble
(
columnName
);
case
"int"
:
return
results
.
getInt
(
columnName
);
case
"float"
:
return
results
.
getFloat
(
columnName
);
case
"decimal"
:
return
results
.
getBigDecimal
(
columnName
);
case
"date"
:
case
"localdate"
:
return
results
.
getDate
(
columnName
);
case
"time"
:
case
"localtime"
:
return
results
.
getTime
(
columnName
);
case
"timestamp"
:
return
results
.
getTimestamp
(
columnName
);
case
"blob"
:
return
results
.
getBlob
(
columnName
);
case
"boolean"
:
return
results
.
getBoolean
(
columnName
);
case
"byte"
:
return
results
.
getByte
(
columnName
);
case
"bytes"
:
return
results
.
getBytes
(
columnName
);
default
:
return
results
.
getString
(
columnName
);
}
}
}
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/AbstractDriver.java
→
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/
driver/
AbstractDriver.java
View file @
c13a0618
package
com
.
dlink
.
metadata
;
package
com
.
dlink
.
metadata
.
driver
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.metadata.
result.SelectResul
t
;
import
com.dlink.metadata.
convert.ITypeConver
t
;
import
com.dlink.m
odel.Column
;
import
com.dlink.m
etadata.query.IDBQuery
;
import
com.dlink.model.Schema
;
import
com.dlink.model.Schema
;
import
com.dlink.model.Table
;
import
com.dlink.model.Table
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -18,12 +15,16 @@ import java.util.stream.Collectors;
...
@@ -18,12 +15,16 @@ import java.util.stream.Collectors;
* @author wenmo
* @author wenmo
* @since 2021/7/19 23:32
* @since 2021/7/19 23:32
*/
*/
public
abstract
class
AbstractDriver
implements
Driver
{
public
abstract
class
AbstractDriver
implements
Driver
{
public
Logger
logger
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
//
public Logger logger = LoggerFactory.getLogger(this.getClass());
protected
DriverConfig
config
;
protected
DriverConfig
config
;
public
abstract
IDBQuery
getDBQuery
();
public
abstract
ITypeConvert
getTypeConvert
();
public
boolean
canHandle
(
String
type
){
public
boolean
canHandle
(
String
type
){
return
Asserts
.
isEqualsIgnoreCase
(
getType
(),
type
);
return
Asserts
.
isEqualsIgnoreCase
(
getType
(),
type
);
}
}
...
@@ -33,20 +34,6 @@ public abstract class AbstractDriver implements Driver{
...
@@ -33,20 +34,6 @@ public abstract class AbstractDriver implements Driver{
return
this
;
return
this
;
}
}
public
abstract
String
getType
();
public
abstract
boolean
test
();
public
abstract
Driver
connect
();
public
abstract
void
close
();
public
abstract
List
<
Schema
>
listSchemas
();
public
abstract
List
<
Table
>
listTables
(
String
schema
);
public
abstract
List
<
Column
>
listColumns
(
String
schema
,
String
table
);
public
List
<
Schema
>
getSchemasAndTables
(){
public
List
<
Schema
>
getSchemasAndTables
(){
return
listSchemas
().
stream
().
peek
(
schema
->
schema
.
setTables
(
listTables
(
schema
.
getName
()))).
sorted
().
collect
(
Collectors
.
toList
());
return
listSchemas
().
stream
().
peek
(
schema
->
schema
.
setTables
(
listTables
(
schema
.
getName
()))).
sorted
().
collect
(
Collectors
.
toList
());
}
}
...
@@ -55,22 +42,8 @@ public abstract class AbstractDriver implements Driver{
...
@@ -55,22 +42,8 @@ public abstract class AbstractDriver implements Driver{
return
listTables
(
schema
).
stream
().
peek
(
table
->
table
.
setColumns
(
listColumns
(
schema
,
table
.
getName
()))).
sorted
().
collect
(
Collectors
.
toList
());
return
listTables
(
schema
).
stream
().
peek
(
table
->
table
.
setColumns
(
listColumns
(
schema
,
table
.
getName
()))).
sorted
().
collect
(
Collectors
.
toList
());
}
}
public
abstract
boolean
existTable
(
Table
table
);
@Override
public
boolean
existTable
(
Table
table
){
public
abstract
boolean
createTable
(
Table
table
);
return
listTables
(
table
.
getSchema
()).
stream
().
anyMatch
(
tableItem
->
Asserts
.
isEquals
(
tableItem
.
getName
(),
table
.
getName
()));
}
public
abstract
String
getCreateTableSql
(
Table
table
);
public
abstract
boolean
deleteTable
(
Table
table
);
public
abstract
boolean
truncateTable
(
Table
table
);
public
abstract
boolean
insert
(
Table
table
,
JsonNode
data
);
public
abstract
boolean
update
(
Table
table
,
JsonNode
data
);
public
abstract
boolean
delete
(
Table
table
,
JsonNode
data
);
public
abstract
SelectResult
select
(
String
sql
);
}
}
\ No newline at end of file
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/driver/AbstractJdbcDriver.java
0 → 100644
View file @
c13a0618
package
com
.
dlink
.
metadata
.
driver
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.model.Column
;
import
com.dlink.model.Schema
;
import
com.dlink.model.Table
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.ResultSetMetaData
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
/**
* AbstractJdbcDriver
*
* @author wenmo
* @since 2021/7/20 14:09
**/
public
abstract
class
AbstractJdbcDriver
extends
AbstractDriver
{
protected
Connection
conn
;
abstract
String
getDriverClass
();
@Override
public
boolean
test
()
{
Asserts
.
checkNotNull
(
config
,
"无效的数据源配置"
);
try
{
Class
.
forName
(
getDriverClass
());
DriverManager
.
getConnection
(
config
.
getUrl
(),
config
.
getUsername
(),
config
.
getPassword
()).
close
();
}
catch
(
SQLException
e
)
{
// logger.error("Jdbc链接测试失败!错误信息为:" + e.getMessage(), e);
return
false
;
}
catch
(
Exception
e
)
{
return
false
;
}
return
true
;
}
@Override
public
Driver
connect
()
{
try
{
Class
.
forName
(
getDriverClass
());
conn
=
DriverManager
.
getConnection
(
config
.
getUrl
(),
config
.
getUsername
(),
config
.
getPassword
());
}
catch
(
ClassNotFoundException
|
SQLException
e
)
{
throw
new
RuntimeException
(
e
);
}
return
this
;
}
@Override
public
void
close
()
{
try
{
if
(
Asserts
.
isNotNull
(
conn
))
{
conn
.
close
();
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
@Override
public
List
<
Schema
>
listSchemas
(){
List
<
Schema
>
schemas
=
new
ArrayList
<>();
String
schemasSql
=
getDBQuery
().
schemaAllSql
();
try
{
try
(
PreparedStatement
preparedStatement
=
conn
.
prepareStatement
(
schemasSql
);
ResultSet
results
=
preparedStatement
.
executeQuery
())
{
while
(
results
.
next
())
{
String
schemaName
=
results
.
getString
(
getDBQuery
().
schemaName
());
if
(
Asserts
.
isNotNullString
(
schemaName
))
{
Schema
schema
=
new
Schema
(
schemaName
);
schemas
.
add
(
schema
);
}
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
schemas
;
}
@Override
public
List
<
Table
>
listTables
(
String
schemaName
)
{
List
<
Table
>
tableList
=
new
ArrayList
<>();
ResultSet
results
=
null
;
try
{
String
tablesSql
=
getDBQuery
().
tablesSql
();
StringBuilder
sql
=
new
StringBuilder
(
tablesSql
);
try
(
PreparedStatement
preparedStatement
=
conn
.
prepareStatement
(
sql
.
toString
()))
{
preparedStatement
.
setString
(
1
,
schemaName
);
results
=
preparedStatement
.
executeQuery
();
while
(
results
.
next
())
{
String
tableName
=
results
.
getString
(
getDBQuery
().
tableName
());
if
(
Asserts
.
isNotNullString
(
tableName
))
{
Table
tableInfo
=
new
Table
();
tableInfo
.
setName
(
tableName
);
String
tableComment
=
results
.
getString
(
getDBQuery
().
tableComment
());
tableInfo
.
setComment
(
tableComment
);
tableInfo
.
setSchema
(
schemaName
);
tableList
.
add
(
tableInfo
);
}
}
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
Asserts
.
isNotNull
(
results
)){
try
{
results
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
return
tableList
;
}
@Override
public
List
<
Column
>
listColumns
(
String
schema
,
String
tableName
)
{
List
<
Column
>
columns
=
new
ArrayList
<>();
try
{
String
tableFieldsSql
=
getDBQuery
().
columnsSql
();
tableFieldsSql
=
String
.
format
(
tableFieldsSql
,
tableName
);
try
(
PreparedStatement
preparedStatement
=
conn
.
prepareStatement
(
tableFieldsSql
);
ResultSet
results
=
preparedStatement
.
executeQuery
())
{
while
(
results
.
next
())
{
Column
field
=
new
Column
();
String
columnName
=
results
.
getString
(
getDBQuery
().
columnName
());
boolean
isId
;
String
key
=
results
.
getString
(
getDBQuery
().
columnKey
());
isId
=
Asserts
.
isNotNullString
(
key
)
&&
"PRI"
.
equals
(
key
.
toUpperCase
());
if
(
isId
)
{
field
.
setKeyFlag
(
true
);
}
else
{
field
.
setKeyFlag
(
false
);
}
field
.
setName
(
columnName
);
field
.
setType
(
results
.
getString
(
getDBQuery
().
columnType
()));
field
.
setJavaType
(
getTypeConvert
().
convert
(
field
.
getType
()).
getType
());
field
.
setComment
(
results
.
getString
(
getDBQuery
().
columnComment
()));
field
.
setIsNotNull
(
results
.
getString
(
getDBQuery
().
isNotNull
()));
columns
.
add
(
field
);
}
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
return
columns
;
}
@Override
public
boolean
execute
(
String
sql
){
Asserts
.
checkNullString
(
sql
,
"Sql 语句为空"
);
String
[]
sqls
=
sql
.
split
(
";"
);
try
(
Statement
statement
=
conn
.
createStatement
()){
for
(
int
i
=
0
;
i
<
sqls
.
length
;
i
++)
{
if
(
Asserts
.
isNullString
(
sqls
[
i
])){
continue
;
}
statement
.
execute
(
sqls
[
i
]);
}
return
true
;
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
return
false
;
}
@Override
public
List
<
HashMap
<
String
,
Object
>>
query
(
String
sql
)
{
List
<
HashMap
<
String
,
Object
>>
datas
=
new
ArrayList
<>();
List
<
Column
>
columns
=
new
ArrayList
<>();
try
(
PreparedStatement
preparedStatement
=
conn
.
prepareStatement
(
sql
);
ResultSet
results
=
preparedStatement
.
executeQuery
())
{
ResultSetMetaData
metaData
=
results
.
getMetaData
();
for
(
int
i
=
1
;
i
<=
metaData
.
getColumnCount
();
i
++)
{
Column
column
=
new
Column
();
column
.
setName
(
metaData
.
getColumnName
(
i
));
column
.
setType
(
metaData
.
getColumnTypeName
(
i
));
column
.
setJavaType
(
getTypeConvert
().
convert
(
metaData
.
getColumnTypeName
(
i
)).
getType
());
columns
.
add
(
column
);
}
while
(
results
.
next
())
{
HashMap
<
String
,
Object
>
data
=
new
HashMap
<>();
for
(
int
i
=
0
;
i
<
columns
.
size
();
i
++)
{
data
.
put
(
columns
.
get
(
i
).
getName
(),
getTypeConvert
().
convertValue
(
results
,
columns
.
get
(
i
).
getName
(),
columns
.
get
(
i
).
getType
()));
}
datas
.
add
(
data
);
}
results
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
return
datas
;
}
}
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/Driver.java
→
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/
driver/
Driver.java
View file @
c13a0618
package
com
.
dlink
.
metadata
;
package
com
.
dlink
.
metadata
.
driver
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.exception.MetaDataException
;
import
com.dlink.exception.MetaDataException
;
...
@@ -22,7 +22,7 @@ import java.util.Optional;
...
@@ -22,7 +22,7 @@ import java.util.Optional;
public
interface
Driver
{
public
interface
Driver
{
static
Optional
<
Driver
>
get
(
DriverConfig
config
)
{
static
Optional
<
Driver
>
get
(
DriverConfig
config
)
{
Asserts
.
checkNotNull
(
config
,
"配置不能为空"
);
Asserts
.
checkNotNull
(
config
,
"
数据源
配置不能为空"
);
Iterator
<
Driver
>
providers
=
Service
.
providers
(
Driver
.
class
);
Iterator
<
Driver
>
providers
=
Service
.
providers
(
Driver
.
class
);
while
(
providers
.
hasNext
())
{
while
(
providers
.
hasNext
())
{
Driver
gainer
=
providers
.
next
();
Driver
gainer
=
providers
.
next
();
...
@@ -47,6 +47,8 @@ public interface Driver {
...
@@ -47,6 +47,8 @@ public interface Driver {
String
getType
();
String
getType
();
String
getName
();
boolean
test
();
boolean
test
();
Driver
connect
();
Driver
connect
();
...
@@ -55,13 +57,13 @@ public interface Driver {
...
@@ -55,13 +57,13 @@ public interface Driver {
List
<
Schema
>
listSchemas
();
List
<
Schema
>
listSchemas
();
List
<
Table
>
listTables
(
String
schema
);
List
<
Table
>
listTables
(
String
schema
Name
);
List
<
Column
>
listColumns
(
String
schema
,
String
tabl
e
);
List
<
Column
>
listColumns
(
String
schema
Name
,
String
tableNam
e
);
List
<
Schema
>
getSchemasAndTables
();
List
<
Schema
>
getSchemasAndTables
();
List
<
Table
>
getTablesAndColumns
(
String
schema
);
List
<
Table
>
getTablesAndColumns
(
String
schema
Name
);
boolean
existTable
(
Table
table
);
boolean
existTable
(
Table
table
);
...
@@ -81,4 +83,8 @@ public interface Driver {
...
@@ -81,4 +83,8 @@ public interface Driver {
SelectResult
select
(
String
sql
);
SelectResult
select
(
String
sql
);
boolean
execute
(
String
sql
);
List
query
(
String
sql
);
}
}
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/DriverConfig.java
→
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/
driver/
DriverConfig.java
View file @
c13a0618
package
com
.
dlink
.
metadata
;
package
com
.
dlink
.
metadata
.
driver
;
import
lombok.Getter
;
import
lombok.Getter
;
...
@@ -22,4 +22,5 @@ public class DriverConfig {
...
@@ -22,4 +22,5 @@ public class DriverConfig {
private
String
username
;
private
String
username
;
private
String
password
;
private
String
password
;
}
}
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/query/AbstractDBQuery.java
0 → 100644
View file @
c13a0618
package
com
.
dlink
.
metadata
.
query
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
/**
* AbstractDBQuery
*
* @author wenmo
* @since 2021/7/20 13:50
**/
public
abstract
class
AbstractDBQuery
implements
IDBQuery
{
@Override
public
boolean
isKeyIdentity
(
ResultSet
results
)
throws
SQLException
{
return
false
;
}
@Override
public
String
[]
columnCustom
()
{
return
null
;
}
}
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/query/IDBQuery.java
0 → 100644
View file @
c13a0618
package
com
.
dlink
.
metadata
.
query
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
/**
* IDBQuery
*
* @author wenmo
* @since 2021/7/20 13:44
**/
public
interface
IDBQuery
{
/**
* 所有数据库信息查询 SQL
*/
String
schemaAllSql
();
/**
* 所有表信息查询 SQL
*/
String
tableAllSql
();
/**
* 表信息查询 SQL
*/
String
tablesSql
();
/**
* 表字段信息查询 SQL
*/
String
columnsSql
();
/**
* 数据库、模式、组织名称
*/
String
schemaName
();
/**
* 表名称
*/
String
tableName
();
/**
* 表注释
*/
String
tableComment
();
/**
* 字段名称
*/
String
columnName
();
/**
* 字段类型
*/
String
columnType
();
/**
* 字段注释
*/
String
columnComment
();
/**
* 主键字段
*/
String
columnKey
();
/**
* 判断主键是否为identity,目前仅对mysql进行检查
*
* @param results ResultSet
* @return 主键是否为identity
* @throws SQLException ignore
*/
boolean
isKeyIdentity
(
ResultSet
results
)
throws
SQLException
;
/**
* 判断字段是否不为null,目前仅对mysql进行检查
*
* @return 主键是否不为bull
*/
String
isNotNull
();
/**
* 自定义字段名称
*/
String
[]
columnCustom
();
}
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/rules/DbColumnType.java
0 → 100644
View file @
c13a0618
package
com
.
dlink
.
metadata
.
rules
;
/**
* DbColumnType
*
* @author wenmo
* @since 2021/7/20 14:44
**/
public
enum
DbColumnType
implements
IColumnType
{
// 基本类型
BASE_BYTE
(
"byte"
,
null
),
BASE_SHORT
(
"short"
,
null
),
BASE_CHAR
(
"char"
,
null
),
BASE_INT
(
"int"
,
null
),
BASE_LONG
(
"long"
,
null
),
BASE_FLOAT
(
"float"
,
null
),
BASE_DOUBLE
(
"double"
,
null
),
BASE_BOOLEAN
(
"boolean"
,
null
),
// 包装类型
BYTE
(
"Byte"
,
null
),
SHORT
(
"Short"
,
null
),
CHARACTER
(
"Character"
,
null
),
INTEGER
(
"Integer"
,
null
),
LONG
(
"Long"
,
null
),
FLOAT
(
"Float"
,
null
),
DOUBLE
(
"Double"
,
null
),
BOOLEAN
(
"Boolean"
,
null
),
STRING
(
"String"
,
null
),
// sql 包下数据类型
DATE_SQL
(
"Date"
,
"java.sql.Date"
),
TIME
(
"Time"
,
"java.sql.Time"
),
TIMESTAMP
(
"Timestamp"
,
"java.sql.Timestamp"
),
BLOB
(
"Blob"
,
"java.sql.Blob"
),
CLOB
(
"Clob"
,
"java.sql.Clob"
),
// java8 新时间类型
LOCAL_DATE
(
"LocalDate"
,
"java.time.LocalDate"
),
LOCAL_TIME
(
"LocalTime"
,
"java.time.LocalTime"
),
YEAR
(
"Year"
,
"java.time.Year"
),
YEAR_MONTH
(
"YearMonth"
,
"java.time.YearMonth"
),
LOCAL_DATE_TIME
(
"LocalDateTime"
,
"java.time.LocalDateTime"
),
INSTANT
(
"Instant"
,
"java.time.Instant"
),
// 其他杂类
BYTE_ARRAY
(
"byte[]"
,
null
),
OBJECT
(
"Object"
,
null
),
DATE
(
"Date"
,
"java.util.Date"
),
BIG_INTEGER
(
"BigInteger"
,
"java.math.BigInteger"
),
BIG_DECIMAL
(
"BigDecimal"
,
"java.math.BigDecimal"
);
/**
* 类型
*/
private
final
String
type
;
/**
* 包路径
*/
private
final
String
pkg
;
DbColumnType
(
final
String
type
,
final
String
pkg
)
{
this
.
type
=
type
;
this
.
pkg
=
pkg
;
}
@Override
public
String
getType
()
{
return
type
;
}
@Override
public
String
getPkg
()
{
return
pkg
;
}
}
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/rules/IColumnType.java
0 → 100644
View file @
c13a0618
package
com
.
dlink
.
metadata
.
rules
;
/**
* IColumnType
*
* @author wenmo
* @since 2021/7/20 14:43
**/
public
interface
IColumnType
{
/**
* 获取字段类型
*/
String
getType
();
/**
* 获取字段类型完整名
*/
String
getPkg
();
}
dlink-metadata/dlink-metadata-mysql/pom.xml
0 → 100644
View file @
c13a0618
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
dlink-metadata
</artifactId>
<groupId>
com.dlink
</groupId>
<version>
0.3.0-SANPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
dlink-metadata-mysql
</artifactId>
<dependencies>
<dependency>
<groupId>
com.dlink
</groupId>
<artifactId>
dlink-metadata-base
</artifactId>
</dependency>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
dlink-metadata/dlink-metadata-mysql/src/main/java/com/dlink/metadata/convert/MySqlTypeConvert.java
0 → 100644
View file @
c13a0618
package
com
.
dlink
.
metadata
.
convert
;
import
com.dlink.metadata.rules.DbColumnType
;
import
com.dlink.metadata.rules.IColumnType
;
/**
* MySqlTypeConvert
*
* @author wenmo
* @since 2021/7/20 15:21
**/
public
class
MySqlTypeConvert
implements
ITypeConvert
{
@Override
public
IColumnType
convert
(
String
columnType
)
{
String
t
=
columnType
.
toLowerCase
();
if
(
t
.
contains
(
"char"
))
{
return
DbColumnType
.
STRING
;
}
else
if
(
t
.
contains
(
"bigint"
))
{
return
DbColumnType
.
LONG
;
}
else
if
(
t
.
contains
(
"tinyint(1)"
))
{
return
DbColumnType
.
BOOLEAN
;
}
else
if
(
t
.
contains
(
"int"
))
{
return
DbColumnType
.
INTEGER
;
}
else
if
(
t
.
contains
(
"text"
))
{
return
DbColumnType
.
STRING
;
}
else
if
(
t
.
contains
(
"bit"
))
{
return
DbColumnType
.
BOOLEAN
;
}
else
if
(
t
.
contains
(
"decimal"
))
{
return
DbColumnType
.
BIG_DECIMAL
;
}
else
if
(
t
.
contains
(
"clob"
))
{
return
DbColumnType
.
CLOB
;
}
else
if
(
t
.
contains
(
"blob"
))
{
return
DbColumnType
.
BLOB
;
}
else
if
(
t
.
contains
(
"binary"
))
{
return
DbColumnType
.
BYTE_ARRAY
;
}
else
if
(
t
.
contains
(
"float"
))
{
return
DbColumnType
.
FLOAT
;
}
else
if
(
t
.
contains
(
"double"
))
{
return
DbColumnType
.
DOUBLE
;
}
else
if
(
t
.
contains
(
"json"
)
||
t
.
contains
(
"enum"
))
{
return
DbColumnType
.
STRING
;
}
else
if
(
t
.
contains
(
"date"
)
||
t
.
contains
(
"time"
)
||
t
.
contains
(
"year"
))
{
return
DbColumnType
.
DATE
;
}
return
DbColumnType
.
STRING
;
}
@Override
public
String
convertToDB
(
String
columnType
)
{
switch
(
columnType
.
toLowerCase
()){
case
"string"
:
return
"varchar(255)"
;
case
"boolean"
:
return
"tinyint(1)"
;
case
"int"
:
case
"integer"
:
return
"int"
;
case
"double"
:
return
"double"
;
case
"float"
:
return
"float"
;
case
"date"
:
return
"datetime(0)"
;
default
:
return
"varchar(255)"
;
}
}
}
dlink-metadata/dlink-metadata-mysql/src/main/java/com/dlink/metadata/driver/MySqlDriver.java
0 → 100644
View file @
c13a0618
package
com
.
dlink
.
metadata
.
driver
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.metadata.convert.ITypeConvert
;
import
com.dlink.metadata.convert.MySqlTypeConvert
;
import
com.dlink.metadata.query.IDBQuery
;
import
com.dlink.metadata.query.MySqlQuery
;
import
com.dlink.metadata.result.SelectResult
;
import
com.dlink.model.Column
;
import
com.dlink.model.Table
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* MysqlDriver
*
* @author wenmo
* @since 2021/7/20 14:06
**/
public
class
MySqlDriver
extends
AbstractJdbcDriver
{
@Override
public
IDBQuery
getDBQuery
()
{
return
new
MySqlQuery
();
}
@Override
public
ITypeConvert
getTypeConvert
()
{
return
new
MySqlTypeConvert
();
}
@Override
public
String
getType
()
{
return
"Mysql"
;
}
@Override
public
String
getName
()
{
return
"Mysql"
;
}
@Override
public
String
getDriverClass
()
{
return
"com.mysql.cj.jdbc.Driver"
;
}
@Override
public
boolean
createTable
(
Table
table
)
{
String
sql
=
getCreateTableSql
(
table
);
if
(
Asserts
.
isNotNull
(
sql
))
{
return
execute
(
sql
.
replaceAll
(
"\r\n"
,
" "
));
}
else
{
return
false
;
}
}
@Override
public
boolean
deleteTable
(
Table
table
)
{
return
false
;
}
@Override
public
boolean
truncateTable
(
Table
table
)
{
return
false
;
}
@Override
public
String
getCreateTableSql
(
Table
table
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"CREATE TABLE `"
+
table
.
getName
()
+
"` ("
);
List
<
Column
>
columns
=
table
.
getColumns
();
for
(
int
i
=
0
;
i
<
columns
.
size
();
i
++)
{
if
(
i
>
0
){
sb
.
append
(
","
);
}
sb
.
append
(
"`"
+
columns
.
get
(
i
).
getName
()
+
"` "
+
getTypeConvert
().
convertToDB
(
columns
.
get
(
i
)));
if
(
"YES"
.
equals
(
columns
.
get
(
i
).
getIsNotNull
())){
sb
.
append
(
" NOT NULL"
);
}
else
{
sb
.
append
(
" NULL"
);
}
if
(
Asserts
.
isNotNull
(
columns
.
get
(
i
).
getComment
())){
sb
.
append
(
" COMMENT '"
+
columns
.
get
(
i
).
getComment
()+
"'"
);
}
}
List
<
String
>
pks
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
columns
.
size
();
i
++)
{
if
(
columns
.
get
(
i
).
isKeyFlag
()){
pks
.
add
(
columns
.
get
(
i
).
getName
());
}
}
if
(
pks
.
size
()>
0
){
sb
.
append
(
", PRIMARY KEY ( "
);
for
(
int
i
=
0
;
i
<
pks
.
size
();
i
++)
{
if
(
i
>
0
){
sb
.
append
(
","
);
}
sb
.
append
(
"`"
+
pks
.
get
(
i
)+
"`"
);
}
sb
.
append
(
" ) USING BTREE"
);
}
sb
.
append
(
") ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '"
+(
table
.
getComment
()!=
null
?
table
.
getComment
():
""
)+
"' ROW_FORMAT = Dynamic;"
);
return
sb
.
toString
();
}
@Override
public
boolean
insert
(
Table
table
,
JsonNode
data
)
{
return
false
;
}
@Override
public
boolean
update
(
Table
table
,
JsonNode
data
)
{
return
false
;
}
@Override
public
boolean
delete
(
Table
table
,
JsonNode
data
)
{
return
false
;
}
@Override
public
SelectResult
select
(
String
sql
)
{
return
null
;
}
}
dlink-metadata/dlink-metadata-mysql/src/main/java/com/dlink/metadata/query/MySqlQuery.java
0 → 100644
View file @
c13a0618
package
com
.
dlink
.
metadata
.
query
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
/**
* MySqlQuery
*
* @author wenmo
* @since 2021/7/20 14:01
**/
public
class
MySqlQuery
extends
AbstractDBQuery
{
@Override
public
String
schemaAllSql
()
{
return
"show databases"
;
}
@Override
public
String
tableAllSql
()
{
return
"select TABLE_NAME AS `NAME`,TABLE_SCHEMA AS `Database`,TABLE_COMMENT AS COMMENT from information_schema.tables"
;
}
@Override
public
String
tablesSql
()
{
return
"select TABLE_NAME AS `NAME`,TABLE_SCHEMA AS `Database`,TABLE_COMMENT AS COMMENT from information_schema.tables"
+
" where TABLE_SCHEMA = ?"
;
// return "show table status WHERE 1=1 ";
}
@Override
public
String
columnsSql
()
{
return
"show full columns from `%s`"
;
}
@Override
public
String
schemaName
()
{
return
"Database"
;
}
@Override
public
String
tableName
()
{
return
"NAME"
;
}
@Override
public
String
tableComment
()
{
return
"COMMENT"
;
}
@Override
public
String
columnName
()
{
return
"FIELD"
;
}
@Override
public
String
columnType
()
{
return
"TYPE"
;
}
@Override
public
String
columnComment
()
{
return
"COMMENT"
;
}
@Override
public
String
columnKey
()
{
return
"KEY"
;
}
@Override
public
boolean
isKeyIdentity
(
ResultSet
results
)
throws
SQLException
{
return
"auto_increment"
.
equals
(
results
.
getString
(
"Extra"
));
}
@Override
public
String
isNotNull
()
{
return
"NULL"
;
}
}
dlink-metadata/dlink-metadata-mysql/src/main/resources/META-INF/services/com.dlink.metadata.driver.Driver
0 → 100644
View file @
c13a0618
com.dlink.metadata.driver.MySqlDriver
\ No newline at end of file
dlink-metadata/dlink-metadata-mysql/src/test/java/com/dlink/metadata/MysqlTest.java
0 → 100644
View file @
c13a0618
package
com
.
dlink
.
metadata
;
import
com.dlink.metadata.driver.Driver
;
import
com.dlink.metadata.driver.DriverConfig
;
import
com.dlink.model.Column
;
import
com.dlink.model.Schema
;
import
org.junit.Test
;
import
java.util.List
;
/**
* MysqlTest
*
* @author wenmo
* @since 2021/7/20 15:32
**/
public
class
MysqlTest
{
public
Driver
getDriver
(){
DriverConfig
config
=
new
DriverConfig
();
config
.
setType
(
"Mysql"
);
config
.
setIp
(
"10.1.51.25"
);
config
.
setPort
(
3306
);
config
.
setUsername
(
"dca"
);
config
.
setPassword
(
"dca"
);
config
.
setUrl
(
"jdbc:mysql://10.1.51.25:3306/dca?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&autoReconnect=true"
);
return
Driver
.
build
(
config
).
connect
();
}
@Test
public
void
connectTest
(){
DriverConfig
config
=
new
DriverConfig
();
config
.
setType
(
"Mysql"
);
config
.
setIp
(
"10.1.51.25"
);
config
.
setPort
(
3306
);
config
.
setUsername
(
"dca"
);
config
.
setPassword
(
"dca"
);
config
.
setUrl
(
"jdbc:mysql://10.1.51.25:3306/dca?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&autoReconnect=true"
);
boolean
test
=
Driver
.
build
(
config
).
test
();
System
.
out
.
println
(
test
);
System
.
out
.
println
(
"end..."
);
}
@Test
public
void
schemaTest
(){
Driver
driver
=
getDriver
();
List
<
Schema
>
schemasAndTables
=
driver
.
getSchemasAndTables
();
System
.
out
.
println
(
"end..."
);
}
@Test
public
void
columnTest
(){
Driver
driver
=
getDriver
();
List
<
Column
>
columns
=
driver
.
listColumns
(
"dca"
,
"MENU"
);
System
.
out
.
println
(
"end..."
);
}
@Test
public
void
queryTest
(){
Driver
driver
=
getDriver
();
List
query
=
driver
.
query
(
"select * from MENU"
);
System
.
out
.
println
(
"end..."
);
}
}
dlink-metadata/pom.xml
View file @
c13a0618
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
<packaging>
pom
</packaging>
<packaging>
pom
</packaging>
<modules>
<modules>
<module>
dlink-metadata-base
</module>
<module>
dlink-metadata-base
</module>
<module>
dlink-metadata-mysql
</module>
</modules>
</modules>
...
...
pom.xml
View file @
c13a0618
...
@@ -42,6 +42,7 @@
...
@@ -42,6 +42,7 @@
<maven-jar-plugin.version>
3.2.0
</maven-jar-plugin.version>
<maven-jar-plugin.version>
3.2.0
</maven-jar-plugin.version>
<maven-assembly-plugin.version>
3.2.0
</maven-assembly-plugin.version>
<maven-assembly-plugin.version>
3.2.0
</maven-assembly-plugin.version>
<maven.resource.version>
3.2.0
</maven.resource.version>
<maven.resource.version>
3.2.0
</maven.resource.version>
<junit.version>
4.12
</junit.version>
</properties>
</properties>
<dependencyManagement>
<dependencyManagement>
...
@@ -127,6 +128,12 @@
...
@@ -127,6 +128,12 @@
<artifactId>
hibernate-validator
</artifactId>
<artifactId>
hibernate-validator
</artifactId>
<version>
${hibernate-validator.version}
</version>
<version>
${hibernate-validator.version}
</version>
</dependency>
</dependency>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<version>
${junit.version}
</version>
<scope>
provided
</scope>
</dependency>
<!-- flyway -->
<!-- flyway -->
<dependency>
<dependency>
<groupId>
org.flywaydb
</groupId>
<groupId>
org.flywaydb
</groupId>
...
@@ -158,6 +165,11 @@
...
@@ -158,6 +165,11 @@
<artifactId>
dlink-common
</artifactId>
<artifactId>
dlink-common
</artifactId>
<version>
${project.version}
</version>
<version>
${project.version}
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.dlink
</groupId>
<artifactId>
dlink-metadata-base
</artifactId>
<version>
${project.version}
</version>
</dependency>
</dependencies>
</dependencies>
</dependencyManagement>
</dependencyManagement>
<build>
<build>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment