Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
XKZJ_WCL
TDengine
提交
16b35ba5
T
TDengine
项目概览
XKZJ_WCL
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
16b35ba5
编写于
12月 21, 2020
作者:
Z
zyyang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
change
上级
c623b4da
变更
39
显示空白变更内容
内联
并排
Showing
39 changed file
with
743 addition
and
990 deletion
+743
-990
tests/examples/JDBC/JDBCDemo/pom.xml
tests/examples/JDBC/JDBCDemo/pom.xml
+0
-6
tests/examples/JDBC/taosdemo/pom.xml
tests/examples/JDBC/taosdemo/pom.xml
+68
-53
tests/examples/JDBC/taosdemo/readme.md
tests/examples/JDBC/taosdemo/readme.md
+3
-1
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/TaosDemoApplication.java
.../main/java/com/taosdata/taosdemo/TaosDemoApplication.java
+56
-89
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/TaosdemoApplication.java
.../main/java/com/taosdata/taosdemo/TaosdemoApplication.java
+0
-21
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/controller/DatabaseController.java
.../com/taosdata/taosdemo/controller/DatabaseController.java
+0
-40
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/controller/InsertController.java
...va/com/taosdata/taosdemo/controller/InsertController.java
+0
-17
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/controller/SubTableController.java
.../com/taosdata/taosdemo/controller/SubTableController.java
+0
-45
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/controller/SuperTableController.java
...om/taosdata/taosdemo/controller/SuperTableController.java
+0
-26
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/controller/TableController.java
...ava/com/taosdata/taosdemo/controller/TableController.java
+0
-11
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/DatabaseMapper.java
...c/main/java/com/taosdata/taosdemo/dao/DatabaseMapper.java
+5
-6
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/SubTableMapper.java
...c/main/java/com/taosdata/taosdemo/dao/SubTableMapper.java
+4
-5
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/SuperTableMapper.java
...main/java/com/taosdata/taosdemo/dao/SuperTableMapper.java
+3
-7
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/TableMapper.java
.../src/main/java/com/taosdata/taosdemo/dao/TableMapper.java
+4
-5
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/impl/DatabaseMapperImpl.java
...va/com/taosdata/taosdemo/dao/impl/DatabaseMapperImpl.java
+32
-0
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/impl/SubTableMapperImpl.java
...va/com/taosdata/taosdemo/dao/impl/SubTableMapperImpl.java
+45
-0
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/impl/SuperTableMapperImpl.java
.../com/taosdata/taosdemo/dao/impl/SuperTableMapperImpl.java
+22
-0
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/impl/TableMapperImpl.java
.../java/com/taosdata/taosdemo/dao/impl/TableMapperImpl.java
+43
-0
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/domain/RowValue.java
.../src/main/java/com/taosdata/taosdemo/domain/RowValue.java
+0
-1
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/mapper/DatabaseMapper.xml
...main/java/com/taosdata/taosdemo/mapper/DatabaseMapper.xml
+0
-48
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/mapper/SubTableMapper.xml
...main/java/com/taosdata/taosdemo/mapper/SubTableMapper.xml
+0
-81
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/mapper/SuperTableMapper.xml
...in/java/com/taosdata/taosdemo/mapper/SuperTableMapper.xml
+0
-41
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/mapper/TableMapper.xml
...rc/main/java/com/taosdata/taosdemo/mapper/TableMapper.xml
+0
-68
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/DatabaseService.java
...n/java/com/taosdata/taosdemo/service/DatabaseService.java
+1
-1
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/SubTableService.java
...n/java/com/taosdata/taosdemo/service/SubTableService.java
+4
-9
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/SuperTableService.java
...java/com/taosdata/taosdemo/service/SuperTableService.java
+3
-32
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/TableService.java
...main/java/com/taosdata/taosdemo/service/TableService.java
+5
-21
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/utils/SqlSpeller.java
...src/main/java/com/taosdata/taosdemo/utils/SqlSpeller.java
+189
-0
tests/examples/JDBC/taosdemo/src/main/resources/application.properties
...s/JDBC/taosdemo/src/main/resources/application.properties
+1
-1
tests/examples/JDBC/taosdemo/src/main/resources/templates/index.html
...les/JDBC/taosdemo/src/main/resources/templates/index.html
+1
-1
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/TaosdemoApplicationTests.java
.../java/com/taosdata/taosdemo/TaosdemoApplicationTests.java
+0
-13
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/mapper/DatabaseMapperTest.java
...java/com/taosdata/taosdemo/mapper/DatabaseMapperTest.java
+0
-42
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/mapper/SubTableMapperTest.java
...java/com/taosdata/taosdemo/mapper/SubTableMapperTest.java
+0
-88
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/mapper/SuperTableMapperTest.java
...va/com/taosdata/taosdemo/mapper/SuperTableMapperTest.java
+0
-50
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/service/DatabaseServiceTest.java
...va/com/taosdata/taosdemo/service/DatabaseServiceTest.java
+0
-29
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/service/SubTableServiceTest.java
...va/com/taosdata/taosdemo/service/SubTableServiceTest.java
+0
-50
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/service/SuperTableServiceTest.java
.../com/taosdata/taosdemo/service/SuperTableServiceTest.java
+0
-39
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/service/TableServiceTest.java
.../java/com/taosdata/taosdemo/service/TableServiceTest.java
+0
-43
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/utils/SqlSpellerTest.java
...test/java/com/taosdata/taosdemo/utils/SqlSpellerTest.java
+254
-0
未找到文件。
tests/examples/JDBC/JDBCDemo/pom.xml
浏览文件 @
16b35ba5
...
...
@@ -10,12 +10,6 @@
<packaging>
jar
</packaging>
<build>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-assembly-plugin
</artifactId>
<version>
3.0.0
</version>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-assembly-plugin
</artifactId>
...
...
tests/examples/JDBC/taosdemo/pom.xml
浏览文件 @
16b35ba5
...
...
@@ -2,24 +2,68 @@
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
2.4.0
</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>
com.taosdata
</groupId>
<artifactId>
taosdemo
</artifactId>
<version>
2.0
</version>
<name>
taosdemo
</name>
<packaging>
jar
</packaging>
<description>
Demo project for TDengine
</description>
<properties>
<
java.version>
1.8
</java
.version>
<
spring.version>
5.3.2
</spring
.version>
</properties>
<dependencies>
<!-- spring -->
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-context
</artifactId>
<version>
${spring.version}
</version>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-core
</artifactId>
<version>
${spring.version}
</version>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-beans
</artifactId>
<version>
${spring.version}
</version>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-expression
</artifactId>
<version>
${spring.version}
</version>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-aop
</artifactId>
<version>
${spring.version}
</version>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-aspects
</artifactId>
<version>
${spring.version}
</version>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-test
</artifactId>
<version>
${spring.version}
</version>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-jdbc
</artifactId>
<version>
${spring.version}
</version>
</dependency>
<!-- HikariCP -->
<dependency>
<groupId>
com.zaxxer
</groupId>
<artifactId>
HikariCP
</artifactId>
<version>
3.4.5
</version>
</dependency>
<!-- taos jdbc -->
<dependency>
<groupId>
com.taosdata.jdbc
</groupId>
...
...
@@ -32,69 +76,30 @@
<artifactId>
mysql-connector-java
</artifactId>
<version>
5.1.47
</version>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
<version>
3.1.2
</version>
</dependency>
<!-- log4j -->
<dependency>
<groupId>
log4j
</groupId>
<artifactId>
log4j
</artifactId>
<version>
1.2.17
</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-jdbc
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-thymeleaf
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
org.mybatis.spring.boot
</groupId>
<artifactId>
mybatis-spring-boot-starter
</artifactId>
<version>
2.1.4
</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<version>
4.12
</version>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-devtools
</artifactId>
<scope>
runtime
</scope>
<optional>
true
</optional>
</dependency>
<!-- lombok -->
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
<version>
1.18.16
</version>
<scope>
provided
</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>
src/main/resources/lib
</directory>
<includes>
<include>
**/*.jar
</include>
</includes>
</resource>
<resource>
<directory>
src/main/resources
</directory>
<includes>
...
...
@@ -103,7 +108,6 @@
</includes>
<filtering>
true
</filtering>
</resource>
<resource>
<directory>
src/main/java
</directory>
<includes>
...
...
@@ -115,10 +119,21 @@
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-assembly-plugin
</artifactId>
<version>
3.0.0
</version>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<configuration>
<source>
8
</source>
<target>
8
</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
tests/examples/JDBC/taosdemo/readme.md
浏览文件 @
16b35ba5
taosdemo是为了给TDengine
\ No newline at end of file
需求:
1.
可以读lowa的配置文件
2.
支持对JNI方式和Restful方式的taos-driver
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/
components/TaosDemoCommandLineRunner
.java
→
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/
TaosDemoApplication
.java
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo
.components
;
package
com.taosdata.taosdemo
;
import
com.taosdata.taosdemo.components.DataSourceFactory
;
import
com.taosdata.taosdemo.domain.FieldMeta
;
import
com.taosdata.taosdemo.domain.SuperTableMeta
;
import
com.taosdata.taosdemo.domain.TagMeta
;
import
com.taosdata.taosdemo.service.DatabaseService
;
import
com.taosdata.taosdemo.service.InsertTask
;
import
com.taosdata.taosdemo.service.SubTableService
;
import
com.taosdata.taosdemo.service.SuperTableService
;
import
com.taosdata.taosdemo.service.data.SuperTableMetaGenerator
;
import
com.taosdata.taosdemo.utils.JdbcTaosdemoConfig
;
import
org.apache.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.stereotype.Component
;
import
javax.sql.DataSource
;
import
java.time.Duration
;
...
...
@@ -23,19 +20,12 @@ import java.util.concurrent.FutureTask;
import
java.util.stream.Collectors
;
import
java.util.stream.IntStream
;
public
class
TaosDemoApplication
{
private
static
Logger
logger
=
Logger
.
getLogger
(
TaosDemoApplication
.
class
);
@Component
public
class
TaosDemoCommandLineRunner
implements
CommandLineRunner
{
public
static
void
main
(
String
[]
args
)
{
private
static
Logger
logger
=
Logger
.
getLogger
(
TaosDemoCommandLineRunner
.
class
);
private
DatabaseService
databaseService
;
private
SuperTableService
superTableService
;
private
DataSource
dataSource
;
private
SuperTableMeta
superTableMeta
;
@Override
public
void
run
(
String
...
args
)
throws
Exception
{
// 读配置参数
JdbcTaosdemoConfig
config
=
new
JdbcTaosdemoConfig
(
args
);
boolean
isHelp
=
Arrays
.
asList
(
args
).
contains
(
"--help"
);
...
...
@@ -44,26 +34,11 @@ public class TaosDemoCommandLineRunner implements CommandLineRunner {
System
.
exit
(
0
);
}
dataSource
=
DataSourceFactory
.
getInstance
(
config
.
host
,
config
.
port
,
config
.
user
,
config
.
password
);
databaseService
=
new
DatabaseService
(
dataSource
);
superTableService
=
new
SuperTableService
(
dataSource
);
DataSource
dataSource
=
DataSourceFactory
.
getInstance
(
config
.
host
,
config
.
port
,
config
.
user
,
config
.
password
);
DatabaseService
databaseService
=
new
DatabaseService
(
dataSource
);
SuperTableService
superTableService
=
new
SuperTableService
(
dataSource
);
// 创建数据库
// createDatabaseTask(config);
// 超级表的meta
superTableMeta
=
buildSuperTableMeta
(
config
);
// 建表
// createTableTask(config);
// 插入
insertTask
(
config
);
// 删除表
if
(
config
.
dropTable
)
{
superTableService
.
drop
(
config
.
database
,
config
.
superTable
);
}
System
.
exit
(
0
);
}
private
void
createDatabaseTask
(
JdbcTaosdemoConfig
config
)
{
long
start
=
System
.
currentTimeMillis
();
Map
<
String
,
String
>
databaseParam
=
new
HashMap
<>();
databaseParam
.
put
(
"database"
,
config
.
database
);
...
...
@@ -76,11 +51,37 @@ public class TaosDemoCommandLineRunner implements CommandLineRunner {
databaseService
.
useDatabase
(
config
.
database
);
long
end
=
System
.
currentTimeMillis
();
logger
.
info
(
">>> create database time cost : "
+
(
end
-
start
)
+
" ms."
);
/**********************************************************************************/
// 超级表的meta
SuperTableMeta
superTableMeta
;
// create super table
if
(
config
.
superTableSQL
!=
null
)
{
// use a sql to create super table
superTableMeta
=
SuperTableMetaGenerator
.
generate
(
config
.
superTableSQL
);
if
(
config
.
database
!=
null
&&
!
config
.
database
.
isEmpty
())
superTableMeta
.
setDatabase
(
config
.
database
);
}
else
if
(
config
.
numOfFields
==
0
)
{
// default sql = "create table test.weather (ts timestamp, temperature float, humidity int) tags(location nchar(64), groupId int)";
superTableMeta
=
new
SuperTableMeta
();
superTableMeta
.
setDatabase
(
config
.
database
);
superTableMeta
.
setName
(
config
.
superTable
);
List
<
FieldMeta
>
fields
=
new
ArrayList
<>();
fields
.
add
(
new
FieldMeta
(
"ts"
,
"timestamp"
));
fields
.
add
(
new
FieldMeta
(
"temperature"
,
"float"
));
fields
.
add
(
new
FieldMeta
(
"humidity"
,
"int"
));
superTableMeta
.
setFields
(
fields
);
List
<
TagMeta
>
tags
=
new
ArrayList
<>();
tags
.
add
(
new
TagMeta
(
"location"
,
"nchar(64)"
));
tags
.
add
(
new
TagMeta
(
"groupId"
,
"int"
));
superTableMeta
.
setTags
(
tags
);
}
else
{
// create super table with specified field size and tag size
superTableMeta
=
SuperTableMetaGenerator
.
generate
(
config
.
database
,
config
.
superTable
,
config
.
numOfFields
,
config
.
prefixOfFields
,
config
.
numOfTags
,
config
.
prefixOfTags
);
}
// 建超级表,三种方式:1. 指定SQL,2. 指定field和tags的个数,3. 默认
private
void
createTableTask
(
JdbcTaosdemoConfig
config
)
{
long
start
=
System
.
currentTimeMillis
();
/**********************************************************************************/
// 建表
start
=
System
.
currentTimeMillis
();
if
(
config
.
doCreateTable
)
{
superTableService
.
create
(
superTableMeta
);
if
(
config
.
autoCreateTable
)
...
...
@@ -88,21 +89,10 @@ public class TaosDemoCommandLineRunner implements CommandLineRunner {
// 批量建子表
// subTableService.createSubTable(superTableMeta, config.numOfTables, config.prefixOfTable, config.numOfThreadsForCreate);
}
long
end
=
System
.
currentTimeMillis
();
end
=
System
.
currentTimeMillis
();
logger
.
info
(
">>> create table time cost : "
+
(
end
-
start
)
+
" ms."
);
}
private
long
getProperStartTime
(
JdbcTaosdemoConfig
config
)
{
Instant
now
=
Instant
.
now
();
long
earliest
=
now
.
minus
(
Duration
.
ofDays
(
config
.
keep
)).
toEpochMilli
();
long
startTime
=
config
.
startTime
;
if
(
startTime
==
0
||
startTime
<
earliest
)
{
startTime
=
earliest
;
}
return
startTime
;
}
private
void
insertTask
(
JdbcTaosdemoConfig
config
)
{
/**********************************************************************************/
// 插入
long
tableSize
=
config
.
numOfTables
;
int
threadSize
=
config
.
numOfThreadsForInsert
;
long
startTime
=
getProperStartTime
(
config
);
...
...
@@ -111,7 +101,7 @@ public class TaosDemoCommandLineRunner implements CommandLineRunner {
threadSize
=
(
int
)
tableSize
;
long
gap
=
(
long
)
Math
.
ceil
((
0.0d
+
tableSize
)
/
threadSize
);
long
start
=
System
.
currentTimeMillis
();
start
=
System
.
currentTimeMillis
();
List
<
FutureTask
>
taskList
=
new
ArrayList
<>();
List
<
Thread
>
threads
=
IntStream
.
range
(
0
,
threadSize
)
...
...
@@ -150,47 +140,24 @@ public class TaosDemoCommandLineRunner implements CommandLineRunner {
}
}
long
end
=
System
.
currentTimeMillis
();
end
=
System
.
currentTimeMillis
();
logger
.
info
(
"insert "
+
affectedRows
+
" rows, time cost: "
+
(
end
-
start
)
+
" ms"
);
// long numOfTables = config.numOfTables;
// int numOfTablesPerSQL = config.numOfTablesPerSQL;
// long numOfRowsPerTable = config.numOfRowsPerTable;
// int numOfValuesPerSQL = config.numOfValuesPerSQL;
// long start = System.currentTimeMillis();
// long affectRows = 0;
// long end = System.currentTimeMillis();
// logger.info(">>> insert " + affectRows + " rows with time cost: " + (end - start) + "ms");
/**********************************************************************************/
// 删除表
if
(
config
.
dropTable
)
{
superTableService
.
drop
(
config
.
database
,
config
.
superTable
);
}
System
.
exit
(
0
);
}
private
SuperTableMeta
buildSuperTableMeta
(
JdbcTaosdemoConfig
config
)
{
SuperTableMeta
tableMeta
;
// create super table
if
(
config
.
superTableSQL
!=
null
)
{
// use a sql to create super table
tableMeta
=
SuperTableMetaGenerator
.
generate
(
config
.
superTableSQL
);
if
(
config
.
database
!=
null
&&
!
config
.
database
.
isEmpty
())
tableMeta
.
setDatabase
(
config
.
database
);
}
else
if
(
config
.
numOfFields
==
0
)
{
// default sql = "create table test.weather (ts timestamp, temperature float, humidity int) tags(location nchar(64), groupId int)";
SuperTableMeta
superTableMeta
=
new
SuperTableMeta
();
superTableMeta
.
setDatabase
(
config
.
database
);
superTableMeta
.
setName
(
config
.
superTable
);
List
<
FieldMeta
>
fields
=
new
ArrayList
<>();
fields
.
add
(
new
FieldMeta
(
"ts"
,
"timestamp"
));
fields
.
add
(
new
FieldMeta
(
"temperature"
,
"float"
));
fields
.
add
(
new
FieldMeta
(
"humidity"
,
"int"
));
superTableMeta
.
setFields
(
fields
);
List
<
TagMeta
>
tags
=
new
ArrayList
<>();
tags
.
add
(
new
TagMeta
(
"location"
,
"nchar(64)"
));
tags
.
add
(
new
TagMeta
(
"groupId"
,
"int"
));
superTableMeta
.
setTags
(
tags
);
return
superTableMeta
;
}
else
{
// create super table with specified field size and tag size
tableMeta
=
SuperTableMetaGenerator
.
generate
(
config
.
database
,
config
.
superTable
,
config
.
numOfFields
,
config
.
prefixOfFields
,
config
.
numOfTags
,
config
.
prefixOfTags
);
private
static
long
getProperStartTime
(
JdbcTaosdemoConfig
config
)
{
Instant
now
=
Instant
.
now
();
long
earliest
=
now
.
minus
(
Duration
.
ofDays
(
config
.
keep
)).
toEpochMilli
();
long
startTime
=
config
.
startTime
;
if
(
startTime
==
0
||
startTime
<
earliest
)
{
startTime
=
earliest
;
}
return
tableMeta
;
return
startTime
;
}
...
...
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/TaosdemoApplication.java
已删除
100644 → 0
浏览文件 @
c623b4da
package
com.taosdata.taosdemo
;
import
com.zaxxer.hikari.HikariDataSource
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
javax.sql.DataSource
;
@MapperScan
(
basePackages
=
{
"com.taosdata.taosdemo.mapper"
})
@SpringBootApplication
public
class
TaosdemoApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
TaosdemoApplication
.
class
,
args
);
}
}
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/controller/DatabaseController.java
已删除
100644 → 0
浏览文件 @
c623b4da
package
com.taosdata.taosdemo.controller
;
import
com.taosdata.taosdemo.service.DatabaseService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Map
;
@RestController
@RequestMapping
public
class
DatabaseController
{
@Autowired
private
DatabaseService
databaseService
;
/**
* create database
***/
@PostMapping
public
int
create
(
@RequestBody
Map
<
String
,
String
>
map
)
{
return
databaseService
.
createDatabase
(
map
);
}
/**
* drop database
**/
@DeleteMapping
(
"/{dbname}"
)
public
int
delete
(
@PathVariable
(
"dbname"
)
String
dbname
)
{
return
databaseService
.
dropDatabase
(
dbname
);
}
/**
* use database
**/
@GetMapping
(
"/{dbname}"
)
public
int
use
(
@PathVariable
(
"dbname"
)
String
dbname
)
{
return
databaseService
.
useDatabase
(
dbname
);
}
}
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/controller/InsertController.java
已删除
100644 → 0
浏览文件 @
c623b4da
package
com.taosdata.taosdemo.controller
;
import
org.springframework.web.bind.annotation.RestController
;
@RestController
public
class
InsertController
{
//TODO:多线程写一张表, thread = 10, table = 1
//TODO:一个批次写多张表, insert into t1 using weather values() t2 using weather values()
//TODO:插入的频率,
//TODO:指定一张表内的records数量
//TODO:是否乱序,
//TODO:乱序的比例,乱序的范围
//TODO:先建表,自动建表
//TODO:一个批次写多张表
}
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/controller/SubTableController.java
已删除
100644 → 0
浏览文件 @
c623b4da
package
com.taosdata.taosdemo.controller
;
import
com.taosdata.taosdemo.domain.TableValue
;
import
com.taosdata.taosdemo.service.SuperTableService
;
import
com.taosdata.taosdemo.service.TableService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RestController
;
@RestController
public
class
SubTableController
{
@Autowired
private
TableService
tableService
;
@Autowired
private
SuperTableService
superTableService
;
//TODO: 使用supertable创建一个子表
//TODO:使用supertable创建多个子表
//TODO:使用supertable多线程创建子表
//TODO:使用supertable多线程创建子表,指定子表的name_prefix,子表的数量,使用线程的个数
/**
* 创建表,超级表或者普通表
**/
/**
* 创建超级表的子表
**/
@PostMapping
(
"/{database}/{superTable}"
)
public
int
createTable
(
@PathVariable
(
"database"
)
String
database
,
@PathVariable
(
"superTable"
)
String
superTable
,
@RequestBody
TableValue
tableMetadta
)
{
tableMetadta
.
setDatabase
(
database
);
return
0
;
}
}
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/controller/SuperTableController.java
已删除
100644 → 0
浏览文件 @
c623b4da
package
com.taosdata.taosdemo.controller
;
import
com.taosdata.taosdemo.domain.SuperTableMeta
;
import
com.taosdata.taosdemo.service.SuperTableService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
public
class
SuperTableController
{
@Autowired
private
SuperTableService
superTableService
;
@PostMapping
(
"/{database}"
)
public
int
createTable
(
@PathVariable
(
"database"
)
String
database
,
@RequestBody
SuperTableMeta
tableMetadta
)
{
tableMetadta
.
setDatabase
(
database
);
return
superTableService
.
create
(
tableMetadta
);
}
//TODO: 删除超级表
//TODO:查询超级表
//TODO:统计查询表
}
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/controller/TableController.java
已删除
100644 → 0
浏览文件 @
c623b4da
package
com.taosdata.taosdemo.controller
;
public
class
TableController
{
//TODO:创建普通表,create table(ts timestamp, temperature float)
//TODO:创建普通表,指定表的列数,包括第一列timestamp
//TODO:创建普通表,指定表每列的name和type
}
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/
mapper
/DatabaseMapper.java
→
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/
dao
/DatabaseMapper.java
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo.
mapper
;
package
com.taosdata.taosdemo.
dao
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.Map
;
...
...
@@ -9,16 +8,16 @@ import java.util.Map;
public
interface
DatabaseMapper
{
// create database if not exists XXX
int
createDatabase
(
@Param
(
"database"
)
String
dbname
);
void
createDatabase
(
String
dbname
);
// drop database if exists XXX
int
dropDatabase
(
@Param
(
"database"
)
String
dbname
);
void
dropDatabase
(
String
dbname
);
// create database if not exists XXX keep XX days XX replica XX
int
createDatabaseWithParameters
(
Map
<
String
,
String
>
map
);
void
createDatabaseWithParameters
(
Map
<
String
,
String
>
map
);
// use XXX
int
useDatabase
(
@Param
(
"database"
)
String
dbname
);
void
useDatabase
(
String
dbname
);
//TODO: alter database
...
...
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/
mapper
/SubTableMapper.java
→
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/
dao
/SubTableMapper.java
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo.
mapper
;
package
com.taosdata.taosdemo.
dao
;
import
com.taosdata.taosdemo.domain.SubTableMeta
;
import
com.taosdata.taosdemo.domain.SubTableValue
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
...
...
@@ -11,7 +10,7 @@ import java.util.List;
public
interface
SubTableMapper
{
// 创建:子表
int
createUsingSuperTable
(
SubTableMeta
subTableMeta
);
void
createUsingSuperTable
(
SubTableMeta
subTableMeta
);
// 插入:一张子表多个values
int
insertOneTableMultiValues
(
SubTableValue
subTableValue
);
...
...
@@ -20,10 +19,10 @@ public interface SubTableMapper {
int
insertOneTableMultiValuesUsingSuperTable
(
SubTableValue
subTableValue
);
// 插入:多张表多个values
int
insertMultiTableMultiValues
(
@Param
(
"tables"
)
List
<
SubTableValue
>
tables
);
int
insertMultiTableMultiValues
(
List
<
SubTableValue
>
tables
);
// 插入:多张表多个values,自动建表
int
insertMultiTableMultiValuesUsingSuperTable
(
@Param
(
"tables"
)
List
<
SubTableValue
>
tables
);
int
insertMultiTableMultiValuesUsingSuperTable
(
List
<
SubTableValue
>
tables
);
//<!-- TODO:修改子表标签值 alter table ${tablename} set tag tagName=newTagValue-->
...
...
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/
mapper
/SuperTableMapper.java
→
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/
dao
/SuperTableMapper.java
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo.
mapper
;
package
com.taosdata.taosdemo.
dao
;
import
com.taosdata.taosdemo.domain.SuperTableMeta
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
@Repository
public
interface
SuperTableMapper
{
// 创建超级表,使用自己定义的SQL语句
int
createSuperTableUsingSQL
(
@Param
(
"createSuperTableSQL"
)
String
sql
);
// 创建超级表 create table if not exists xxx.xxx (f1 type1, f2 type2, ... ) tags( t1 type1, t2 type2 ...)
int
createSuperTable
(
SuperTableMeta
tableMetadata
);
void
createSuperTable
(
SuperTableMeta
tableMetadata
);
// 删除超级表 drop table if exists xxx;
int
dropSuperTable
(
@Param
(
"database"
)
String
database
,
@Param
(
"name"
)
String
name
);
void
dropSuperTable
(
String
database
,
String
name
);
//<!-- TODO:查询所有超级表信息 show stables -->
...
...
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/
mapper
/TableMapper.java
→
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/
dao
/TableMapper.java
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo.
mapper
;
package
com.taosdata.taosdemo.
dao
;
import
com.taosdata.taosdemo.domain.TableMeta
;
import
com.taosdata.taosdemo.domain.TableValue
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
...
...
@@ -11,7 +10,7 @@ import java.util.List;
public
interface
TableMapper
{
// 创建:普通表
int
create
(
TableMeta
tableMeta
);
void
create
(
TableMeta
tableMeta
);
// 插入:一张表多个value
int
insertOneTableMultiValues
(
TableValue
values
);
...
...
@@ -20,9 +19,9 @@ public interface TableMapper {
int
insertOneTableMultiValuesWithColumns
(
TableValue
values
);
// 插入:多个表多个value
int
insertMultiTableMultiValues
(
@Param
(
"tables"
)
List
<
TableValue
>
tables
);
int
insertMultiTableMultiValues
(
List
<
TableValue
>
tables
);
// 插入:多个表多个value, 指定的列
int
insertMultiTableMultiValuesWithColumns
(
@Param
(
"tables"
)
List
<
TableValue
>
tables
);
int
insertMultiTableMultiValuesWithColumns
(
List
<
TableValue
>
tables
);
}
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/impl/DatabaseMapperImpl.java
0 → 100644
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo.dao.impl
;
import
com.taosdata.taosdemo.dao.DatabaseMapper
;
import
com.taosdata.taosdemo.utils.SqlSpeller
;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
java.util.Map
;
public
class
DatabaseMapperImpl
implements
DatabaseMapper
{
private
JdbcTemplate
jdbcTemplate
=
new
JdbcTemplate
();
@Override
public
void
createDatabase
(
String
dbname
)
{
jdbcTemplate
.
execute
(
"create database if not exists "
+
dbname
);
}
@Override
public
void
dropDatabase
(
String
dbname
)
{
jdbcTemplate
.
update
(
"drop database if exists"
+
dbname
);
}
@Override
public
void
createDatabaseWithParameters
(
Map
<
String
,
String
>
map
)
{
jdbcTemplate
.
execute
(
SqlSpeller
.
createDatabase
(
map
));
}
@Override
public
void
useDatabase
(
String
dbname
)
{
jdbcTemplate
.
execute
(
"use "
+
dbname
);
}
}
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/
mapper
/impl/SubTableMapperImpl.java
→
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/
dao
/impl/SubTableMapperImpl.java
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo.
mapper
.impl
;
package
com.taosdata.taosdemo.
dao
.impl
;
import
com.taosdata.taosdemo.dao.SubTableMapper
;
import
com.taosdata.taosdemo.domain.SubTableMeta
;
import
com.taosdata.taosdemo.domain.SubTableValue
;
import
com.taosdata.taosdemo.
mapper.SubTableMapp
er
;
import
com.taosdata.taosdemo.
utils.SqlSpell
er
;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
java.util.List
;
...
...
@@ -12,27 +13,33 @@ public class SubTableMapperImpl implements SubTableMapper {
private
JdbcTemplate
jdbcTemplate
;
@Override
public
int
createUsingSuperTable
(
SubTableMeta
subTableMeta
)
{
return
0
;
public
void
createUsingSuperTable
(
SubTableMeta
subTableMeta
)
{
String
sql
=
SqlSpeller
.
createTableUsingSuperTable
(
subTableMeta
);
jdbcTemplate
.
execute
(
sql
);
}
@Override
public
int
insertOneTableMultiValues
(
SubTableValue
subTableValue
)
{
return
0
;
String
sql
=
SqlSpeller
.
insertOneTableMultiValues
(
subTableValue
);
return
jdbcTemplate
.
update
(
sql
);
}
@Override
public
int
insertOneTableMultiValuesUsingSuperTable
(
SubTableValue
subTableValue
)
{
return
0
;
String
sql
=
SqlSpeller
.
insertOneTableMultiValuesUsingSuperTable
(
subTableValue
);
return
jdbcTemplate
.
update
(
sql
);
}
@Override
public
int
insertMultiTableMultiValues
(
List
<
SubTableValue
>
tables
)
{
return
0
;
String
sql
=
SqlSpeller
.
insertMultiSubTableMultiValues
(
tables
);
return
jdbcTemplate
.
update
(
sql
);
}
@Override
public
int
insertMultiTableMultiValuesUsingSuperTable
(
List
<
SubTableValue
>
tables
)
{
return
0
;
String
sql
=
SqlSpeller
.
insertMultiTableMultiValuesUsingSuperTable
(
tables
);
return
jdbcTemplate
.
update
(
sql
);
}
}
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/impl/SuperTableMapperImpl.java
0 → 100644
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo.dao.impl
;
import
com.taosdata.taosdemo.dao.SuperTableMapper
;
import
com.taosdata.taosdemo.domain.SuperTableMeta
;
import
com.taosdata.taosdemo.utils.SqlSpeller
;
import
org.springframework.jdbc.core.JdbcTemplate
;
public
class
SuperTableMapperImpl
implements
SuperTableMapper
{
private
JdbcTemplate
jdbcTemplate
;
@Override
public
void
createSuperTable
(
SuperTableMeta
tableMetadata
)
{
String
sql
=
SqlSpeller
.
createSuperTable
(
tableMetadata
);
jdbcTemplate
.
execute
(
sql
);
}
@Override
public
void
dropSuperTable
(
String
database
,
String
name
)
{
jdbcTemplate
.
execute
(
"drop table if exists "
+
database
+
"."
+
name
);
}
}
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/impl/TableMapperImpl.java
0 → 100644
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo.dao.impl
;
import
com.taosdata.taosdemo.dao.TableMapper
;
import
com.taosdata.taosdemo.domain.TableMeta
;
import
com.taosdata.taosdemo.domain.TableValue
;
import
com.taosdata.taosdemo.utils.SqlSpeller
;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
java.util.List
;
public
class
TableMapperImpl
implements
TableMapper
{
private
JdbcTemplate
template
;
@Override
public
void
create
(
TableMeta
tableMeta
)
{
String
sql
=
SqlSpeller
.
createTable
(
tableMeta
);
template
.
execute
(
sql
);
}
@Override
public
int
insertOneTableMultiValues
(
TableValue
values
)
{
String
sql
=
SqlSpeller
.
insertOneTableMultiValues
(
values
);
return
template
.
update
(
sql
);
}
@Override
public
int
insertOneTableMultiValuesWithColumns
(
TableValue
values
)
{
String
sql
=
SqlSpeller
.
insertOneTableMultiValuesWithColumns
(
values
);
return
template
.
update
(
sql
);
}
@Override
public
int
insertMultiTableMultiValues
(
List
<
TableValue
>
tables
)
{
String
sql
=
SqlSpeller
.
insertMultiTableMultiValues
(
tables
);
return
template
.
update
(
sql
);
}
@Override
public
int
insertMultiTableMultiValuesWithColumns
(
List
<
TableValue
>
tables
)
{
String
sql
=
SqlSpeller
.
insertMultiTableMultiValuesWithColumns
(
tables
);
return
template
.
update
(
sql
);
}
}
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/domain/RowValue.java
浏览文件 @
16b35ba5
...
...
@@ -8,7 +8,6 @@ import java.util.List;
public
class
RowValue
{
private
List
<
FieldValue
>
fields
;
public
RowValue
(
List
<
FieldValue
>
fields
)
{
this
.
fields
=
fields
;
}
...
...
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/mapper/DatabaseMapper.xml
已删除
100644 → 0
浏览文件 @
c623b4da
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.taosdata.taosdemo.mapper.DatabaseMapper"
>
<!-- create database XXX -->
<update
id=
"createDatabase"
parameterType=
"java.lang.String"
>
create database if not exists ${database}
</update>
<update
id=
"dropDatabase"
parameterType=
"java.lang.String"
>
DROP database if exists ${database}
</update>
<update
id=
"createDatabaseWithParameters"
parameterType=
"map"
>
CREATE database if not exists ${database}
<if
test=
"keep != null"
>
KEEP ${keep}
</if>
<if
test=
"days != null"
>
DAYS ${days}
</if>
<if
test=
"replica != null"
>
REPLICA ${replica}
</if>
<if
test=
"cache != null"
>
cache ${cache}
</if>
<if
test=
"blocks != null"
>
blocks ${blocks}
</if>
<if
test=
"minrows != null"
>
minrows ${minrows}
</if>
<if
test=
"maxrows != null"
>
maxrows ${maxrows}
</if>
</update>
<update
id=
"useDatabase"
parameterType=
"java.lang.String"
>
use ${database}
</update>
<!-- TODO: alter database -->
<!-- TODO: show database -->
</mapper>
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/mapper/SubTableMapper.xml
已删除
100644 → 0
浏览文件 @
c623b4da
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.taosdata.taosdemo.mapper.SubTableMapper"
>
<!-- 创建子表 -->
<update
id=
"createUsingSuperTable"
>
CREATE table IF NOT EXISTS ${database}.${name} USING ${supertable} TAGS
<foreach
collection=
"tags"
item=
"tag"
index=
"index"
open=
"("
close=
")"
separator=
","
>
#{tag.value}
</foreach>
</update>
<!-- 插入:向一张表中插入多张表 -->
<insert
id=
"insertOneTableMultiValues"
>
INSERT INTO ${database}.${name}
VALUES
<foreach
collection=
"values"
item=
"value"
>
<foreach
collection=
"value.fields"
item=
"field"
open=
"("
close=
")"
separator=
","
>
#{field.value}
</foreach>
</foreach>
</insert>
<!-- 插入:使用自动建表模式,向一张表中插入多条数据 -->
<insert
id=
"insertOneTableMultiValuesUsingSuperTable"
>
INSERT INTO ${database}.${name} USING ${supertable} TAGS
<foreach
collection=
"tags"
item=
"tag"
index=
"index"
open=
"("
close=
")"
separator=
","
>
#{tag.value}
</foreach>
VALUES
<foreach
collection=
"values"
item=
"value"
>
<foreach
collection=
"value.fields"
item=
"field"
open=
"("
close=
")"
separator=
","
>
#{field.value}
</foreach>
</foreach>
</insert>
<!-- TODO:插入:向一张表中插入多张表, 指定列 -->
<!-- TODO:插入:向一张表中插入多张表, 自动建表,指定列 -->
<!-- 插入:向多张表中插入多条数据 -->
<insert
id=
"insertMultiTableMultiValues"
>
INSERT INTO
<foreach
collection=
"tables"
item=
"table"
>
${table.database}.${table.name}
VALUES
<foreach
collection=
"table.values"
item=
"value"
>
<foreach
collection=
"value.fields"
item=
"field"
open=
"("
close=
")"
separator=
","
>
#{field.value}
</foreach>
</foreach>
</foreach>
</insert>
<!-- 插入:向多张表中插入多条数据,自动建表 -->
<insert
id=
"insertMultiTableMultiValuesUsingSuperTable"
>
INSERT INTO
<foreach
collection=
"tables"
item=
"table"
>
${table.database}.${table.name} USING ${table.supertable} TAGS
<foreach
collection=
"table.tags"
item=
"tag"
index=
"index"
open=
"("
close=
")"
separator=
","
>
#{tag.value}
</foreach>
VALUES
<foreach
collection=
"table.values"
item=
"value"
>
<foreach
collection=
"value.fields"
item=
"field"
open=
"("
close=
")"
separator=
","
>
#{field.value}
</foreach>
</foreach>
</foreach>
</insert>
<!-- TODO:插入:向多张表中插入多张表, 指定列 -->
<!-- TODO:插入:向多张表中插入多张表, 自动建表,指定列 -->
<!-- TODO:修改子表标签值 alter table ${tablename} set tag tagName=newTagValue -->
<!-- TODO: -->
</mapper>
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/mapper/SuperTableMapper.xml
已删除
100644 → 0
浏览文件 @
c623b4da
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.taosdata.taosdemo.mapper.SuperTableMapper"
>
<update
id=
"createSuperTableUsingSQL"
>
${createSuperTableSQL}
</update>
<!-- 创建超级表 -->
<update
id=
"createSuperTable"
>
create table if not exists ${database}.${name}
<foreach
collection=
"fields"
item=
"field"
index=
"index"
open=
"("
close=
")"
separator=
","
>
${field.name} ${field.type}
</foreach>
tags
<foreach
collection=
"tags"
item=
"tag"
index=
"index"
open=
"("
close=
")"
separator=
","
>
${tag.name} ${tag.type}
</foreach>
</update>
<!-- 删除超级表:drop super table -->
<delete
id=
"dropSuperTable"
>
drop table if exists ${database}.${name}
</delete>
<!-- TODO:查询所有超级表信息 show stables -->
<!-- TODO:查询表结构 describe stable -->
<!-- TODO:增加列 alter table ${tablename} add column fieldName dataType -->
<!-- TODO:删除列 alter table ${tablename} drop column fieldName -->
<!-- TODO:添加标签 alter table ${tablename} add tag new_tagName tag_type -->
<!-- TODO:删除标签 alter table ${tablename} drop tag_name -->
<!-- TODO:修改标签名 alter table ${tablename} change tag old_tagName new_tagName -->
</mapper>
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/mapper/TableMapper.xml
已删除
100644 → 0
浏览文件 @
c623b4da
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.taosdata.taosdemo.mapper.TableMapper"
>
<!-- 创建普通表 -->
<update
id=
"create"
parameterType=
"com.taosdata.taosdemo.domain.TableMeta"
>
create table if not exists ${database}.${name}
<foreach
collection=
"fields"
item=
"field"
index=
"index"
open=
"("
close=
")"
separator=
","
>
${field.name} ${field.type}
</foreach>
</update>
<!-- 插入:向一张普通表中插入多条数据 -->
<insert
id=
"insertOneTableMultiValues"
parameterType=
"com.taosdata.taosdemo.domain.TableValue"
>
insert into ${database}.${name} values
<foreach
collection=
"values"
item=
"value"
>
<foreach
collection=
"value.fields"
item=
"field"
open=
"("
close=
")"
separator=
","
>
${field.value}
</foreach>
</foreach>
</insert>
<!-- 向一张表中插入指定列的数据 insert into XXX.xx (f1,f2,f3...) values(v1,v2,v3...) -->
<insert
id=
"insertOneTableMultiValuesWithColumns"
parameterType=
"com.taosdata.taosdemo.domain.TableValue"
>
insert into ${database}.${name}
<foreach
collection=
"columns"
item=
"column"
open=
"("
close=
")"
separator=
","
>
${column.name}
</foreach>
values
<foreach
collection=
"values"
item=
"value"
>
<foreach
collection=
"value.fields"
item=
"field"
open=
"("
close=
")"
separator=
","
>
${field.value}
</foreach>
</foreach>
</insert>
<!-- 向多个表中插入多条数据 -->
<insert
id=
"insertMultiTableMultiValues"
>
insert into
<foreach
collection=
"tables"
item=
"table"
>
${table.database}.${table.name} values
<foreach
collection=
"table.values"
item=
"value"
>
<foreach
collection=
"value.fields"
item=
"field"
open=
"("
close=
")"
separator=
","
>
${field.value}
</foreach>
</foreach>
</foreach>
</insert>
<!-- 向多张表中指定的列插入多条数据 -->
<insert
id=
"insertMultiTableMultiValuesWithColumns"
>
insert into
<foreach
collection=
"tables"
item=
"table"
>
${table.database}.${table.name}
<foreach
collection=
"table.columns"
item=
"column"
open=
"("
close=
")"
separator=
","
>
${column.name}
</foreach>
values
<foreach
collection=
"table.values"
item=
"value"
>
<foreach
collection=
"value.fields"
item=
"field"
open=
"("
close=
")"
separator=
","
>
${field.value}
</foreach>
</foreach>
</foreach>
</insert>
</mapper>
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/DatabaseService.java
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo.service
;
import
com.taosdata.taosdemo.
mapper
.DatabaseMapper
;
import
com.taosdata.taosdemo.
dao
.DatabaseMapper
;
import
org.apache.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/SubTableService.java
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo.service
;
import
com.taosdata.taosdemo.dao.SubTableMapper
;
import
com.taosdata.taosdemo.domain.*
;
import
com.taosdata.taosdemo.mapper.SubTableMapper
;
import
com.taosdata.taosdemo.service.data.SubTableMetaGenerator
;
import
com.taosdata.taosdemo.utils.TimeStampUtil
;
import
com.zaxxer.hikari.pool.HikariPool
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.apache.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -20,7 +17,6 @@ import java.util.concurrent.ExecutorService;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.Future
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.atomic.AtomicLong
;
@Service
public
class
SubTableService
extends
AbstractService
{
...
...
@@ -52,8 +48,7 @@ public class SubTableService extends AbstractService {
ExecutorService
executor
=
Executors
.
newFixedThreadPool
(
threadSize
);
List
<
Future
<
Integer
>>
futureList
=
new
ArrayList
<>();
for
(
SubTableMeta
subTableMeta
:
subTables
)
{
Future
<
Integer
>
future
=
executor
.
submit
(()
->
createSubTable
(
subTableMeta
));
futureList
.
add
(
future
);
executor
.
submit
(()
->
createSubTable
(
subTableMeta
));
}
executor
.
shutdown
();
return
getAffectRows
(
futureList
);
...
...
@@ -75,8 +70,8 @@ public class SubTableService extends AbstractService {
}
// 创建一张子表,可以指定database,supertable,tablename,tag值
public
int
createSubTable
(
SubTableMeta
subTableMeta
)
{
return
mapper
.
createUsingSuperTable
(
subTableMeta
);
public
void
createSubTable
(
SubTableMeta
subTableMeta
)
{
mapper
.
createUsingSuperTable
(
subTableMeta
);
}
// 单线程创建多张子表,每张子表分别可以指定自己的database,supertable,tablename,tag值
...
...
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/SuperTableService.java
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo.service
;
import
com.taosdata.taosdemo.d
omain.FieldMeta
;
import
com.taosdata.taosdemo.d
ao.SuperTableMapper
;
import
com.taosdata.taosdemo.domain.SuperTableMeta
;
import
com.taosdata.taosdemo.domain.TagMeta
;
import
com.taosdata.taosdemo.mapper.SuperTableMapper
;
import
com.taosdata.taosdemo.utils.SqlSpeller
;
import
org.apache.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -12,7 +11,6 @@ import javax.sql.DataSource;
import
java.sql.Connection
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.util.List
;
@Service
public
class
SuperTableService
{
...
...
@@ -33,7 +31,7 @@ public class SuperTableService {
try
{
Connection
connection
=
dataSource
.
getConnection
();
Statement
statement
=
connection
.
createStatement
();
String
sql
=
sql
(
superTableMeta
);
String
sql
=
SqlSpeller
.
createSuperTable
(
superTableMeta
);
logger
.
info
(
">>> "
+
sql
);
result
=
statement
.
executeUpdate
(
sql
);
statement
.
close
();
...
...
@@ -42,33 +40,6 @@ public class SuperTableService {
e
.
printStackTrace
();
}
return
result
;
// return superTableMapper.createSuperTable(superTableMeta);
}
private
String
sql
(
SuperTableMeta
superTableMeta
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"create table "
+
superTableMeta
.
getDatabase
()
+
"."
+
superTableMeta
.
getName
()
+
"("
);
List
<
FieldMeta
>
fields
=
superTableMeta
.
getFields
();
for
(
int
i
=
0
;
i
<
fields
.
size
();
i
++)
{
FieldMeta
fieldMeta
=
fields
.
get
(
i
);
if
(
i
==
0
)
{
sb
.
append
(
fieldMeta
.
getName
()
+
" "
+
fieldMeta
.
getType
());
}
else
{
sb
.
append
(
", "
+
fieldMeta
.
getName
()
+
" "
+
fieldMeta
.
getType
());
}
}
sb
.
append
(
") tags("
);
List
<
TagMeta
>
tags
=
superTableMeta
.
getTags
();
for
(
int
i
=
0
;
i
<
tags
.
size
();
i
++)
{
TagMeta
tagMeta
=
tags
.
get
(
i
);
if
(
i
==
0
)
{
sb
.
append
(
tagMeta
.
getName
()
+
" "
+
tagMeta
.
getType
());
}
else
{
sb
.
append
(
", "
+
tagMeta
.
getName
()
+
" "
+
tagMeta
.
getType
()
+
""
);
}
}
sb
.
append
(
")"
);
return
sb
.
toString
();
}
public
void
drop
(
String
database
,
String
name
)
{
...
...
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/TableService.java
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo.service
;
import
com.taosdata.taosdemo.dao.TableMapper
;
import
com.taosdata.taosdemo.domain.TableMeta
;
import
com.taosdata.taosdemo.mapper.TableMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.Future
;
@Service
public
class
TableService
extends
AbstractService
{
@Autowired
private
TableMapper
tableMapper
;
//创建一张表
public
int
create
(
TableMeta
tableMeta
)
{
return
tableMapper
.
create
(
tableMeta
);
public
void
create
(
TableMeta
tableMeta
)
{
tableMapper
.
create
(
tableMeta
);
}
//创建多张表
public
int
create
(
List
<
TableMeta
>
tables
)
{
return
create
(
tables
,
1
);
}
//多线程创建多张表
public
int
create
(
List
<
TableMeta
>
tables
,
int
threadSize
)
{
ExecutorService
executors
=
Executors
.
newFixedThreadPool
(
threadSize
);
List
<
Future
<
Integer
>>
futures
=
new
ArrayList
<>();
for
(
TableMeta
table
:
tables
)
{
Future
<
Integer
>
future
=
executors
.
submit
(()
->
create
(
table
));
futures
.
add
(
future
);
}
return
getAffectRows
(
futures
);
public
void
create
(
List
<
TableMeta
>
tables
)
{
tables
.
stream
().
forEach
(
this
::
create
);
}
...
...
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/utils/SqlSpeller.java
0 → 100644
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo.utils
;
import
com.taosdata.taosdemo.domain.*
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
public
class
SqlSpeller
{
// create database if not exists xxx keep xx days xx replica xx cache xx...
public
static
String
createDatabase
(
Map
<
String
,
String
>
map
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"create database if not exists "
).
append
(
map
.
get
(
"database"
)).
append
(
" "
);
if
(
map
.
containsKey
(
"keep"
))
sb
.
append
(
"keep "
).
append
(
map
.
get
(
"keep"
)).
append
(
" "
);
if
(
map
.
containsKey
(
"days"
))
sb
.
append
(
"days "
).
append
(
map
.
get
(
"days"
)).
append
(
" "
);
if
(
map
.
containsKey
(
"replica"
))
sb
.
append
(
"replica "
).
append
(
map
.
get
(
"replica"
)).
append
(
" "
);
if
(
map
.
containsKey
(
"cache"
))
sb
.
append
(
"cache "
).
append
(
map
.
get
(
"cache"
)).
append
(
" "
);
if
(
map
.
containsKey
(
"blocks"
))
sb
.
append
(
"blocks "
).
append
(
map
.
get
(
"blocks"
)).
append
(
" "
);
if
(
map
.
containsKey
(
"minrows"
))
sb
.
append
(
"minrows "
).
append
(
map
.
get
(
"minrows"
)).
append
(
" "
);
if
(
map
.
containsKey
(
"maxrows"
))
sb
.
append
(
"maxrows "
).
append
(
map
.
get
(
"maxrows"
)).
append
(
" "
);
if
(
map
.
containsKey
(
"precision"
))
sb
.
append
(
"precision "
).
append
(
map
.
get
(
"precision"
)).
append
(
" "
);
if
(
map
.
containsKey
(
"comp"
))
sb
.
append
(
"comp "
).
append
(
map
.
get
(
"comp"
)).
append
(
" "
);
if
(
map
.
containsKey
(
"walLevel"
))
sb
.
append
(
"walLevel "
).
append
(
map
.
get
(
"walLevel"
)).
append
(
" "
);
if
(
map
.
containsKey
(
"quorum"
))
sb
.
append
(
"quorum "
).
append
(
map
.
get
(
"quorum"
)).
append
(
" "
);
if
(
map
.
containsKey
(
"fsync"
))
sb
.
append
(
"fsync "
).
append
(
map
.
get
(
"fsync"
)).
append
(
" "
);
if
(
map
.
containsKey
(
"update"
))
sb
.
append
(
"update "
).
append
(
map
.
get
(
"update"
)).
append
(
" "
);
return
sb
.
toString
();
}
// create table if not exists xx.xx using xx.xx tags(x,x,x)
public
static
String
createTableUsingSuperTable
(
SubTableMeta
subTableMeta
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"create table if not exists "
).
append
(
subTableMeta
.
getDatabase
()).
append
(
"."
).
append
(
subTableMeta
.
getName
()).
append
(
" "
);
sb
.
append
(
"using "
).
append
(
subTableMeta
.
getDatabase
()).
append
(
"."
).
append
(
subTableMeta
.
getSupertable
()).
append
(
" "
);
String
tagStr
=
subTableMeta
.
getTags
().
stream
().
filter
(
Objects:
:
nonNull
)
.
map
(
tagValue
->
tagValue
.
getName
()
+
" "
+
tagValue
.
getValue
()
+
" "
)
.
collect
(
Collectors
.
joining
(
","
,
"("
,
")"
));
sb
.
append
(
"tags "
).
append
(
tagStr
);
return
sb
.
toString
();
}
// insert into xx.xxx values(x,x,x),(x,x,x)...
public
static
String
insertOneTableMultiValues
(
SubTableValue
subTableValue
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"insert into "
).
append
(
subTableValue
.
getDatabase
()).
append
(
"."
).
append
(
subTableValue
.
getName
()
+
" "
);
sb
.
append
(
"values"
).
append
(
rowValues
(
subTableValue
.
getValues
()));
return
sb
.
toString
();
}
//f1, f2, f3
private
static
String
fieldValues
(
List
<
FieldValue
>
fields
)
{
return
fields
.
stream
()
.
filter
(
Objects:
:
nonNull
)
.
map
(
fieldValue
->
"'"
+
fieldValue
.
getValue
()
+
"'"
)
.
collect
(
Collectors
.
joining
(
","
,
"("
,
")"
));
}
//(f1, f2, f3),(f1, f2, f3)
private
static
String
rowValues
(
List
<
RowValue
>
rowValues
)
{
return
rowValues
.
stream
().
filter
(
Objects:
:
nonNull
)
.
map
(
rowValue
->
fieldValues
(
rowValue
.
getFields
()))
.
collect
(
Collectors
.
joining
(
","
,
""
,
""
));
}
// insert into xx.xxx using xx.xx tags(x,x,x) values(x,x,x),(x,x,x)...
public
static
String
insertOneTableMultiValuesUsingSuperTable
(
SubTableValue
subTableValue
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"insert into "
).
append
(
subTableValue
.
getDatabase
()).
append
(
"."
).
append
(
subTableValue
.
getName
()).
append
(
" "
);
sb
.
append
(
"using "
).
append
(
subTableValue
.
getDatabase
()).
append
(
"."
).
append
(
subTableValue
.
getSupertable
()).
append
(
" "
);
sb
.
append
(
"tags "
).
append
(
tagValues
(
subTableValue
.
getTags
())
+
" "
);
sb
.
append
(
"values "
).
append
(
rowValues
(
subTableValue
.
getValues
()));
return
sb
.
toString
();
}
// (t1,t2,t3...)
private
static
String
tagValues
(
List
<
TagValue
>
tags
)
{
return
tags
.
stream
().
filter
(
Objects:
:
nonNull
)
.
map
(
tagValue
->
"'"
+
tagValue
.
getValue
()
+
"'"
)
.
collect
(
Collectors
.
joining
(
","
,
"("
,
")"
));
}
// insert into xx.xx values(),(),()... xx.xx values(),()...
public
static
String
insertMultiSubTableMultiValues
(
List
<
SubTableValue
>
tables
)
{
return
"insert into "
+
tables
.
stream
().
filter
(
Objects:
:
nonNull
)
.
map
(
table
->
table
.
getDatabase
()
+
"."
+
table
.
getName
()
+
" values "
+
rowValues
(
table
.
getValues
()))
.
collect
(
Collectors
.
joining
(
" "
,
""
,
""
));
}
// insert into xx.xx using xx.xx tags(xx,xx) values(),()...
public
static
String
insertMultiTableMultiValuesUsingSuperTable
(
List
<
SubTableValue
>
tables
)
{
return
"insert into "
+
tables
.
stream
().
filter
(
Objects:
:
nonNull
)
.
map
(
table
->
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
table
.
getDatabase
()).
append
(
"."
).
append
(
table
.
getName
());
sb
.
append
(
" using "
).
append
(
table
.
getDatabase
()).
append
(
"."
).
append
(
table
.
getSupertable
());
sb
.
append
(
" tags "
).
append
(
tagValues
(
table
.
getTags
()));
sb
.
append
(
" values "
).
append
(
rowValues
(
table
.
getValues
()));
return
sb
.
toString
();
}).
collect
(
Collectors
.
joining
(
" "
));
}
// create table if not exists xx.xx (f1 xx,f2 xx...) tags(t1 xx, t2 xx...)
public
static
String
createSuperTable
(
SuperTableMeta
tableMetadata
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"create table if not exists "
).
append
(
tableMetadata
.
getDatabase
()).
append
(
"."
).
append
(
tableMetadata
.
getName
());
String
fields
=
tableMetadata
.
getFields
().
stream
()
.
filter
(
Objects:
:
nonNull
).
map
(
field
->
field
.
getName
()
+
" "
+
field
.
getType
()
+
" "
)
.
collect
(
Collectors
.
joining
(
","
,
"("
,
")"
));
sb
.
append
(
fields
);
sb
.
append
(
" tags "
);
String
tags
=
tableMetadata
.
getTags
().
stream
().
filter
(
Objects:
:
nonNull
)
.
map
(
tag
->
tag
.
getName
()
+
" "
+
tag
.
getType
()
+
" "
)
.
collect
(
Collectors
.
joining
(
","
,
"("
,
")"
));
sb
.
append
(
tags
);
return
sb
.
toString
();
}
public
static
String
createTable
(
TableMeta
tableMeta
)
{
// create table if not exists ${database}.${name}
// <foreach collection="fields" item="field" index="index" open="(" close=")" separator=",">
// ${field.name} ${field.type}
// </foreach>
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"create table if not exists "
).
append
(
tableMeta
.
getDatabase
()).
append
(
"."
).
append
(
tableMeta
.
getName
()).
append
(
" "
);
String
fields
=
tableMeta
.
getFields
().
stream
()
.
filter
(
Objects:
:
nonNull
).
map
(
field
->
field
.
getName
()
+
" "
+
field
.
getType
()
+
" "
)
.
collect
(
Collectors
.
joining
(
","
,
"("
,
")"
));
sb
.
append
(
fields
);
return
sb
.
toString
();
}
// insert into xx.xx values()
public
static
String
insertOneTableMultiValues
(
TableValue
table
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"insert into "
).
append
(
table
.
getDatabase
()).
append
(
"."
).
append
(
table
.
getName
()
+
" "
);
sb
.
append
(
"values"
).
append
(
rowValues
(
table
.
getValues
()));
return
sb
.
toString
();
}
// insert into xx.xx (f1, f2, f3...) values(xx,xx,xx),(xx,xx,xx)...
public
static
String
insertOneTableMultiValuesWithColumns
(
TableValue
table
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"insert into "
).
append
(
table
.
getDatabase
()).
append
(
"."
).
append
(
table
.
getName
()).
append
(
" "
);
sb
.
append
(
columnNames
(
table
.
getColumns
()));
sb
.
append
(
" values "
).
append
(
rowValues
(
table
.
getValues
()));
return
sb
.
toString
();
}
// (f1, f2, f3...)
private
static
String
columnNames
(
List
<
FieldMeta
>
fields
)
{
return
fields
.
stream
()
.
filter
(
Objects:
:
nonNull
)
.
map
(
column
->
column
.
getName
()
+
" "
)
.
collect
(
Collectors
.
joining
(
","
,
"("
,
")"
));
}
public
static
String
insertMultiTableMultiValuesWithColumns
(
List
<
TableValue
>
tables
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"insert into "
).
append
(
tables
.
stream
().
filter
(
Objects:
:
nonNull
)
.
map
(
table
->
table
.
getDatabase
()
+
"."
+
table
.
getName
()
+
" "
+
columnNames
(
table
.
getColumns
())
+
" values "
+
rowValues
(
table
.
getValues
()))
.
collect
(
Collectors
.
joining
(
" "
)));
return
sb
.
toString
();
}
public
static
String
insertMultiTableMultiValues
(
List
<
TableValue
>
tables
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"insert into "
).
append
(
tables
.
stream
().
filter
(
Objects:
:
nonNull
).
map
(
table
->
table
.
getDatabase
()
+
"."
+
table
.
getName
()
+
" values "
+
rowValues
(
table
.
getValues
())
).
collect
(
Collectors
.
joining
(
" "
)));
return
sb
.
toString
();
}
}
tests/examples/JDBC/taosdemo/src/main/resources/application.properties
浏览文件 @
16b35ba5
...
...
@@ -13,5 +13,5 @@ spring.datasource.password=taosdata
spring.datasource.hikari.maximum-pool-size
=
1
spring.datasource.hikari.minimum-idle
=
1
spring.datasource.hikari.max-lifetime
=
0
logging.level.com.taosdata.taosdemo.
mapper
=
error
logging.level.com.taosdata.taosdemo.
dao
=
error
server.port
=
8888
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/main/resources/templates/index.html
浏览文件 @
16b35ba5
...
...
@@ -5,6 +5,6 @@
<title>
Index
</title>
</head>
<body>
<h1>
Hello
~~~
</h1>
<h1>
Developing
~~~
</h1>
</body>
</html>
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/TaosdemoApplicationTests.java
已删除
100644 → 0
浏览文件 @
c623b4da
package
com.taosdata.taosdemo
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.boot.test.context.SpringBootTest
;
@SpringBootTest
class
TaosdemoApplicationTests
{
@Test
void
contextLoads
()
{
}
}
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/mapper/DatabaseMapperTest.java
已删除
100644 → 0
浏览文件 @
c623b4da
package
com.taosdata.taosdemo.mapper
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.HashMap
;
import
java.util.Map
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
public
class
DatabaseMapperTest
{
@Autowired
private
DatabaseMapper
databaseMapper
;
@Test
public
void
createDatabase
()
{
databaseMapper
.
createDatabase
(
"db_test"
);
}
@Test
public
void
dropDatabase
()
{
databaseMapper
.
dropDatabase
(
"db_test"
);
}
@Test
public
void
creatDatabaseWithParameters
()
{
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"dbname"
,
"weather"
);
map
.
put
(
"keep"
,
"3650"
);
map
.
put
(
"days"
,
"30"
);
map
.
put
(
"replica"
,
"1"
);
databaseMapper
.
createDatabaseWithParameters
(
map
);
}
@Test
public
void
useDatabase
()
{
databaseMapper
.
useDatabase
(
"test"
);
}
}
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/mapper/SubTableMapperTest.java
已删除
100644 → 0
浏览文件 @
c623b4da
package
com.taosdata.taosdemo.mapper
;
import
com.taosdata.taosdemo.domain.*
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.ArrayList
;
import
java.util.List
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
public
class
SubTableMapperTest
{
@Autowired
private
SubTableMapper
subTableMapper
;
private
List
<
SubTableValue
>
tables
;
@Test
public
void
createUsingSuperTable
()
{
SubTableMeta
subTableMeta
=
new
SubTableMeta
();
subTableMeta
.
setDatabase
(
"test"
);
subTableMeta
.
setSupertable
(
"weather"
);
subTableMeta
.
setName
(
"t1"
);
List
<
TagValue
>
tags
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
tags
.
add
(
new
TagValue
(
"tag"
+
(
i
+
1
),
"nchar(64)"
));
}
subTableMeta
.
setTags
(
tags
);
subTableMapper
.
createUsingSuperTable
(
subTableMeta
);
}
@Test
public
void
insertOneTableMultiValues
()
{
subTableMapper
.
insertOneTableMultiValues
(
tables
.
get
(
0
));
}
@Test
public
void
insertOneTableMultiValuesUsingSuperTable
()
{
subTableMapper
.
insertOneTableMultiValuesUsingSuperTable
(
tables
.
get
(
0
));
}
@Test
public
void
insertMultiTableMultiValues
()
{
subTableMapper
.
insertMultiTableMultiValues
(
tables
);
}
@Test
public
void
insertMultiTableMultiValuesUsingSuperTable
()
{
subTableMapper
.
insertMultiTableMultiValuesUsingSuperTable
(
tables
);
}
@Before
public
void
before
()
{
tables
=
new
ArrayList
<>();
for
(
int
ind
=
0
;
ind
<
3
;
ind
++)
{
SubTableValue
table
=
new
SubTableValue
();
table
.
setDatabase
(
"test"
);
// supertable
table
.
setSupertable
(
"weather"
);
table
.
setName
(
"t"
+
(
ind
+
1
));
// tags
List
<
TagValue
>
tags
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
tags
.
add
(
new
TagValue
(
"tag"
+
(
i
+
1
),
"beijing"
));
}
table
.
setTags
(
tags
);
// values
List
<
RowValue
>
values
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
List
<
FieldValue
>
fields
=
new
ArrayList
<>();
for
(
int
j
=
0
;
j
<
4
;
j
++)
{
fields
.
add
(
new
FieldValue
(
"f"
+
(
j
+
1
),
(
j
+
1
)
*
10
));
}
values
.
add
(
new
RowValue
(
fields
));
}
table
.
setValues
(
values
);
tables
.
add
(
table
);
}
}
}
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/mapper/SuperTableMapperTest.java
已删除
100644 → 0
浏览文件 @
c623b4da
package
com.taosdata.taosdemo.mapper
;
import
com.taosdata.taosdemo.domain.FieldMeta
;
import
com.taosdata.taosdemo.domain.SuperTableMeta
;
import
com.taosdata.taosdemo.domain.TagMeta
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.ArrayList
;
import
java.util.List
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
public
class
SuperTableMapperTest
{
@Autowired
private
SuperTableMapper
superTableMapper
;
@Test
public
void
testCreateSuperTableUsingSQL
()
{
String
sql
=
"create table test.weather (ts timestamp, temperature float, humidity int) tags(location nchar(64), groupId int)"
;
superTableMapper
.
createSuperTableUsingSQL
(
sql
);
}
@Test
public
void
createSuperTable
()
{
SuperTableMeta
superTableMeta
=
new
SuperTableMeta
();
superTableMeta
.
setDatabase
(
"test"
);
superTableMeta
.
setName
(
"weather"
);
List
<
FieldMeta
>
fields
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
5
;
i
++)
{
fields
.
add
(
new
FieldMeta
(
"f"
+
(
i
+
1
),
"int"
));
}
superTableMeta
.
setFields
(
fields
);
List
<
TagMeta
>
tags
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
tags
.
add
(
new
TagMeta
(
"t"
+
(
i
+
1
),
"nchar(64)"
));
}
superTableMeta
.
setTags
(
tags
);
superTableMapper
.
createSuperTable
(
superTableMeta
);
}
@Test
public
void
dropSuperTable
()
{
superTableMapper
.
dropSuperTable
(
"test"
,
"weather"
);
}
}
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/service/DatabaseServiceTest.java
已删除
100644 → 0
浏览文件 @
c623b4da
package
com.taosdata.taosdemo.service
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
public
class
DatabaseServiceTest
{
@Autowired
private
DatabaseService
service
;
@Test
public
void
testCreateDatabase1
()
{
service
.
createDatabase
(
"testXXXX"
);
}
@Test
public
void
dropDatabase
()
{
service
.
dropDatabase
(
"testXXXX"
);
}
@Test
public
void
useDatabase
()
{
service
.
useDatabase
(
"test"
);
}
}
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/service/SubTableServiceTest.java
已删除
100644 → 0
浏览文件 @
c623b4da
package
com.taosdata.taosdemo.service
;
import
com.taosdata.taosdemo.domain.SubTableMeta
;
import
com.taosdata.taosdemo.domain.TagValue
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.ArrayList
;
import
java.util.List
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
public
class
SubTableServiceTest
{
@Autowired
private
SubTableService
service
;
private
List
<
SubTableMeta
>
subTables
;
@Before
public
void
before
()
{
subTables
=
new
ArrayList
<>();
for
(
int
i
=
1
;
i
<=
1
;
i
++)
{
SubTableMeta
subTableMeta
=
new
SubTableMeta
();
subTableMeta
.
setDatabase
(
"test"
);
subTableMeta
.
setSupertable
(
"weather"
);
subTableMeta
.
setName
(
"t"
+
i
);
List
<
TagValue
>
tags
=
new
ArrayList
<>();
tags
.
add
(
new
TagValue
(
"location"
,
"beijing"
));
tags
.
add
(
new
TagValue
(
"groupId"
,
i
));
subTableMeta
.
setTags
(
tags
);
subTables
.
add
(
subTableMeta
);
}
}
@Test
public
void
testCreateSubTable
()
{
int
count
=
service
.
createSubTable
(
subTables
);
System
.
out
.
println
(
"count >>> "
+
count
);
}
@Test
public
void
testCreateSubTableList
()
{
int
count
=
service
.
createSubTable
(
subTables
,
10
);
System
.
out
.
println
(
"count >>> "
+
count
);
}
}
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/service/SuperTableServiceTest.java
已删除
100644 → 0
浏览文件 @
c623b4da
package
com.taosdata.taosdemo.service
;
import
com.taosdata.taosdemo.domain.FieldMeta
;
import
com.taosdata.taosdemo.domain.SuperTableMeta
;
import
com.taosdata.taosdemo.domain.TagMeta
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.ArrayList
;
import
java.util.List
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
public
class
SuperTableServiceTest
{
@Autowired
private
SuperTableService
service
;
@Test
public
void
testCreate
()
{
SuperTableMeta
superTableMeta
=
new
SuperTableMeta
();
superTableMeta
.
setDatabase
(
"test"
);
superTableMeta
.
setName
(
"weather"
);
List
<
FieldMeta
>
fields
=
new
ArrayList
<>();
fields
.
add
(
new
FieldMeta
(
"ts"
,
"timestamp"
));
fields
.
add
(
new
FieldMeta
(
"temperature"
,
"float"
));
fields
.
add
(
new
FieldMeta
(
"humidity"
,
"int"
));
superTableMeta
.
setFields
(
fields
);
List
<
TagMeta
>
tags
=
new
ArrayList
<>();
tags
.
add
(
new
TagMeta
(
"location"
,
"nchar(64)"
));
tags
.
add
(
new
TagMeta
(
"groupId"
,
"int"
));
superTableMeta
.
setTags
(
tags
);
service
.
create
(
superTableMeta
);
}
}
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/service/TableServiceTest.java
已删除
100644 → 0
浏览文件 @
c623b4da
package
com.taosdata.taosdemo.service
;
import
com.taosdata.taosdemo.domain.TableMeta
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.ArrayList
;
import
java.util.List
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
public
class
TableServiceTest
{
@Autowired
private
TableService
tableService
;
private
List
<
TableMeta
>
tables
;
@Before
public
void
before
()
{
tables
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
1
;
i
++)
{
TableMeta
tableMeta
=
new
TableMeta
();
tableMeta
.
setDatabase
(
"test"
);
tableMeta
.
setName
(
"weather"
+
(
i
+
1
));
tables
.
add
(
tableMeta
);
}
}
@Test
public
void
testCreate
()
{
int
count
=
tableService
.
create
(
tables
);
System
.
out
.
println
(
count
);
}
@Test
public
void
testCreateMultiThreads
()
{
System
.
out
.
println
(
tableService
.
create
(
tables
,
10
));
}
}
\ No newline at end of file
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/
mapper/TableMapp
erTest.java
→
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/
utils/SqlSpell
erTest.java
浏览文件 @
16b35ba5
package
com.taosdata.taosdemo.
mapper
;
package
com.taosdata.taosdemo.
utils
;
import
com.taosdata.taosdemo.domain.*
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Random
;
@SpringBootTest
@RunWith
(
SpringRunner
.
class
)
public
class
TableMapperTest
{
@Autowired
private
TableMapper
tableMapper
;
private
static
Random
random
=
new
Random
(
System
.
currentTimeMillis
());
public
class
SqlSpellerTest
{
@Test
public
void
create
()
{
public
void
createDatabase
()
{
HashMap
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"database"
,
"jdbcdb"
);
map
.
put
(
"keep"
,
"3650"
);
map
.
put
(
"days"
,
"30"
);
map
.
put
(
"replica"
,
"1"
);
map
.
put
(
"minRows"
,
"100"
);
map
.
put
(
"maxRows"
,
"1000"
);
map
.
put
(
"cache"
,
"16"
);
map
.
put
(
"blocks"
,
"8"
);
map
.
put
(
"precision"
,
"ms"
);
map
.
put
(
"comp"
,
"2"
);
map
.
put
(
"walLevel"
,
"1"
);
map
.
put
(
"quorum"
,
"1"
);
map
.
put
(
"fsync"
,
"3000"
);
map
.
put
(
"update"
,
"0"
);
String
sql
=
SqlSpeller
.
createDatabase
(
map
);
System
.
out
.
println
(
sql
);
}
@Test
public
void
createTableUsingSuperTable
()
{
SubTableMeta
subTableMeta
=
new
SubTableMeta
();
subTableMeta
.
setDatabase
(
"test"
);
subTableMeta
.
setSupertable
(
"weather"
);
subTableMeta
.
setName
(
"t1"
);
List
<
TagValue
>
tags
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
tags
.
add
(
new
TagValue
(
"tag"
+
(
i
+
1
),
"nchar(64)"
));
}
subTableMeta
.
setTags
(
tags
);
String
sql
=
SqlSpeller
.
createTableUsingSuperTable
(
subTableMeta
);
System
.
out
.
println
(
sql
);
}
@Test
public
void
insertOneTableMultiValues
()
{
String
sql
=
SqlSpeller
.
insertOneTableMultiValues
(
tables
.
get
(
0
));
System
.
out
.
println
(
sql
);
}
@Test
public
void
insertOneTableMultiValuesUsingSuperTable
()
{
String
sql
=
SqlSpeller
.
insertOneTableMultiValuesUsingSuperTable
(
tables
.
get
(
0
));
System
.
out
.
println
(
sql
);
}
@Test
public
void
insertMultiTableMultiValues
()
{
String
sql
=
SqlSpeller
.
insertMultiSubTableMultiValues
(
tables
);
System
.
out
.
println
(
sql
);
}
@Test
public
void
insertMultiTableMultiValuesUsingSuperTable
()
{
String
sql
=
SqlSpeller
.
insertMultiTableMultiValuesUsingSuperTable
(
tables
);
System
.
out
.
println
(
sql
);
}
private
List
<
SubTableValue
>
tables
;
@Before
public
void
before
()
{
tables
=
new
ArrayList
<>();
for
(
int
ind
=
0
;
ind
<
3
;
ind
++)
{
SubTableValue
table
=
new
SubTableValue
();
table
.
setDatabase
(
"test"
);
// supertable
table
.
setSupertable
(
"weather"
);
table
.
setName
(
"t"
+
(
ind
+
1
));
// tags
List
<
TagValue
>
tags
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
tags
.
add
(
new
TagValue
(
"tag"
+
(
i
+
1
),
"beijing"
));
}
table
.
setTags
(
tags
);
// values
List
<
RowValue
>
values
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
List
<
FieldValue
>
fields
=
new
ArrayList
<>();
for
(
int
j
=
0
;
j
<
4
;
j
++)
{
fields
.
add
(
new
FieldValue
(
"f"
+
(
j
+
1
),
(
j
+
1
)
*
10
));
}
values
.
add
(
new
RowValue
(
fields
));
}
table
.
setValues
(
values
);
tables
.
add
(
table
);
}
}
@Test
public
void
createSuperTable
()
{
SuperTableMeta
superTableMeta
=
new
SuperTableMeta
();
superTableMeta
.
setDatabase
(
"test"
);
superTableMeta
.
setName
(
"weather"
);
List
<
FieldMeta
>
fields
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
5
;
i
++)
{
fields
.
add
(
new
FieldMeta
(
"f"
+
(
i
+
1
),
"int"
));
}
superTableMeta
.
setFields
(
fields
);
List
<
TagMeta
>
tags
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
tags
.
add
(
new
TagMeta
(
"t"
+
(
i
+
1
),
"nchar(64)"
));
}
superTableMeta
.
setTags
(
tags
);
String
sql
=
SqlSpeller
.
createSuperTable
(
superTableMeta
);
System
.
out
.
println
(
sql
);
}
@Test
public
void
createTable
()
{
TableMeta
table
=
new
TableMeta
();
table
.
setDatabase
(
"test"
);
table
.
setName
(
"t1"
);
...
...
@@ -31,11 +135,13 @@ public class TableMapperTest {
fields
.
add
(
field
);
}
table
.
setFields
(
fields
);
tableMapper
.
create
(
table
);
String
sql
=
SqlSpeller
.
createTable
(
table
);
System
.
out
.
println
(
sql
);
}
@Test
public
void
i
nsertOneTableMultiValues
()
{
public
void
testI
nsertOneTableMultiValues
()
{
TableValue
table
=
new
TableValue
();
table
.
setDatabase
(
"test"
);
table
.
setName
(
"t1"
);
...
...
@@ -51,11 +157,12 @@ public class TableMapperTest {
}
table
.
setValues
(
values
);
tableMapper
.
insertOneTableMultiValues
(
table
);
String
sql
=
SqlSpeller
.
insertOneTableMultiValues
(
table
);
System
.
out
.
println
(
sql
);
}
@Test
public
void
insertOneTableMultiValuesWithCo
ul
mns
()
{
public
void
insertOneTableMultiValuesWithCo
lu
mns
()
{
TableValue
tableValue
=
new
TableValue
();
tableValue
.
setDatabase
(
"test"
);
tableValue
.
setName
(
"weather"
);
...
...
@@ -79,20 +186,31 @@ public class TableMapperTest {
values
.
add
(
new
RowValue
(
fields
));
}
tableValue
.
setValues
(
values
);
tableMapper
.
insertOneTableMultiValuesWithColumns
(
tableValue
);
String
sql
=
SqlSpeller
.
insertOneTableMultiValuesWithColumns
(
tableValue
);
System
.
out
.
println
(
sql
);
}
@Test
public
void
insertMultiTableMultiValues
()
{
public
void
insertMultiTableMultiValues
WithColumns
()
{
List
<
TableValue
>
tables
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
TableValue
table
=
new
TableValue
();
table
.
setDatabase
(
"test"
);
table
.
setName
(
"t"
+
(
i
+
1
));
// columns
List
<
FieldMeta
>
columns
=
new
ArrayList
<>();
for
(
int
j
=
0
;
j
<
3
;
j
++)
{
FieldMeta
field
=
new
FieldMeta
();
field
.
setName
(
"f"
+
(
j
+
1
));
columns
.
add
(
field
);
}
table
.
setColumns
(
columns
);
// values
List
<
RowValue
>
values
=
new
ArrayList
<>();
for
(
int
j
=
0
;
j
<
5
;
j
++)
{
List
<
FieldValue
>
fields
=
new
ArrayList
<>();
for
(
int
k
=
0
;
k
<
2
;
k
++)
{
for
(
int
k
=
0
;
k
<
columns
.
size
()
;
k
++)
{
FieldValue
field
=
new
FieldValue
<>();
field
.
setValue
((
k
+
1
)
*
10
);
fields
.
add
(
field
);
...
...
@@ -100,32 +218,24 @@ public class TableMapperTest {
values
.
add
(
new
RowValue
(
fields
));
}
table
.
setValues
(
values
);
tables
.
add
(
table
);
}
tableMapper
.
insertMultiTableMultiValues
(
tables
);
String
sql
=
SqlSpeller
.
insertMultiTableMultiValuesWithColumns
(
tables
);
System
.
out
.
println
(
sql
);
}
@Test
public
void
insertMultiTableMultiValuesWithCoulumn
s
()
{
public
void
testInsertMultiTableMultiValue
s
()
{
List
<
TableValue
>
tables
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
TableValue
table
=
new
TableValue
();
table
.
setDatabase
(
"test"
);
table
.
setName
(
"t"
+
(
i
+
1
));
// columns
List
<
FieldMeta
>
columns
=
new
ArrayList
<>();
for
(
int
j
=
0
;
j
<
3
;
j
++)
{
FieldMeta
field
=
new
FieldMeta
();
field
.
setName
(
"f"
+
(
j
+
1
));
columns
.
add
(
field
);
}
table
.
setColumns
(
columns
);
// values
List
<
RowValue
>
values
=
new
ArrayList
<>();
for
(
int
j
=
0
;
j
<
5
;
j
++)
{
List
<
FieldValue
>
fields
=
new
ArrayList
<>();
for
(
int
k
=
0
;
k
<
columns
.
size
()
;
k
++)
{
for
(
int
k
=
0
;
k
<
2
;
k
++)
{
FieldValue
field
=
new
FieldValue
<>();
field
.
setValue
((
k
+
1
)
*
10
);
fields
.
add
(
field
);
...
...
@@ -136,7 +246,9 @@ public class TableMapperTest {
tables
.
add
(
table
);
}
tableMapper
.
insertMultiTableMultiValuesWithColumns
(
tables
);
String
sql
=
SqlSpeller
.
insertMultiTableMultiValues
(
tables
);
System
.
out
.
println
(
sql
);
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录