Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
305cbd8c
T
TDengine
项目概览
慢慢CG
/
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看板
提交
305cbd8c
编写于
12月 21, 2020
作者:
Z
zyyang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
change
上级
8877907e
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
68 addition
and
238 deletion
+68
-238
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/TaosDemoApplication.java
.../main/java/com/taosdata/taosdemo/TaosDemoApplication.java
+4
-3
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/components/JdbcTaosdemoConfig.java
.../com/taosdata/taosdemo/components/JdbcTaosdemoConfig.java
+2
-2
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/DatabaseMapper.java
...c/main/java/com/taosdata/taosdemo/dao/DatabaseMapper.java
+0
-3
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/DatabaseMapperImpl.java
...in/java/com/taosdata/taosdemo/dao/DatabaseMapperImpl.java
+7
-2
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/SubTableMapperImpl.java
...in/java/com/taosdata/taosdemo/dao/SubTableMapperImpl.java
+13
-3
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/SuperTableMapperImpl.java
.../java/com/taosdata/taosdemo/dao/SuperTableMapperImpl.java
+12
-3
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/DatabaseService.java
...n/java/com/taosdata/taosdemo/service/DatabaseService.java
+14
-71
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/InsertTask.java
...c/main/java/com/taosdata/taosdemo/service/InsertTask.java
+1
-1
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/SubTableService.java
...n/java/com/taosdata/taosdemo/service/SubTableService.java
+8
-119
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/SuperTableService.java
...java/com/taosdata/taosdemo/service/SuperTableService.java
+4
-27
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/service/SubTableServiceTest.java
...va/com/taosdata/taosdemo/service/SubTableServiceTest.java
+3
-4
未找到文件。
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/TaosDemoApplication.java
浏览文件 @
305cbd8c
...
...
@@ -6,6 +6,7 @@ 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.components.JdbcTaosdemoConfig
;
...
...
@@ -37,6 +38,7 @@ public class TaosDemoApplication {
DataSource
dataSource
=
DataSourceFactory
.
getInstance
(
config
.
host
,
config
.
port
,
config
.
user
,
config
.
password
);
DatabaseService
databaseService
=
new
DatabaseService
(
dataSource
);
SuperTableService
superTableService
=
new
SuperTableService
(
dataSource
);
SubTableService
subTableService
=
new
SubTableService
(
dataSource
);
// 创建数据库
long
start
=
System
.
currentTimeMillis
();
...
...
@@ -78,7 +80,6 @@ public class TaosDemoApplication {
// 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
);
}
/**********************************************************************************/
// 建表
start
=
System
.
currentTimeMillis
();
...
...
@@ -87,7 +88,7 @@ public class TaosDemoApplication {
if
(
config
.
autoCreateTable
)
return
;
// 批量建子表
//
subTableService.createSubTable(superTableMeta, config.numOfTables, config.prefixOfTable, config.numOfThreadsForCreate);
subTableService
.
createSubTable
(
superTableMeta
,
config
.
numOfTables
,
config
.
prefixOfTable
,
config
.
numOfThreadsForCreate
);
}
end
=
System
.
currentTimeMillis
();
logger
.
info
(
">>> create table time cost : "
+
(
end
-
start
)
+
" ms."
);
...
...
@@ -102,7 +103,7 @@ public class TaosDemoApplication {
long
gap
=
(
long
)
Math
.
ceil
((
0.0d
+
tableSize
)
/
threadSize
);
start
=
System
.
currentTimeMillis
();
// multi threads to insert
List
<
FutureTask
>
taskList
=
new
ArrayList
<>();
List
<
Thread
>
threads
=
IntStream
.
range
(
0
,
threadSize
)
.
mapToObj
(
i
->
{
...
...
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/components/JdbcTaosdemoConfig.java
浏览文件 @
305cbd8c
...
...
@@ -9,7 +9,7 @@ public final class JdbcTaosdemoConfig {
public
String
user
=
"root"
;
//user
public
String
password
=
"taosdata"
;
//password
// database
public
String
database
=
"
test
"
;
//database
public
String
database
=
"
jdbcdb
"
;
//database
public
int
keep
=
3650
;
//keep
public
int
days
=
30
;
//days
public
int
replica
=
1
;
//replica
...
...
@@ -50,7 +50,7 @@ public final class JdbcTaosdemoConfig {
System
.
out
.
println
(
"-user The TDengine user name to use when connecting to the server. Default is 'root'"
);
System
.
out
.
println
(
"-password The password to use when connecting to the server.Default is 'taosdata'"
);
// database
System
.
out
.
println
(
"-database Destination database. Default is '
test
'"
);
System
.
out
.
println
(
"-database Destination database. Default is '
jdbcdb
'"
);
System
.
out
.
println
(
"-keep database keep parameter. Default is 3650"
);
System
.
out
.
println
(
"-days database days parameter. Default is 30"
);
System
.
out
.
println
(
"-replica database replica parameter. Default 1, min: 1, max: 3"
);
...
...
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/DatabaseMapper.java
浏览文件 @
305cbd8c
package
com.taosdata.taosdemo.dao
;
import
org.springframework.stereotype.Repository
;
import
java.util.Map
;
@Repository
public
interface
DatabaseMapper
{
// create database if not exists XXX
...
...
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/DatabaseMapperImpl.java
浏览文件 @
305cbd8c
package
com.taosdata.taosdemo.dao
;
import
com.taosdata.taosdemo.dao.DatabaseMapper
;
import
com.taosdata.taosdemo.utils.SqlSpeller
;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
javax.sql.DataSource
;
import
java.util.Map
;
public
class
DatabaseMapperImpl
implements
DatabaseMapper
{
private
JdbcTemplate
jdbcTemplate
=
new
JdbcTemplate
();
private
final
JdbcTemplate
jdbcTemplate
;
public
DatabaseMapperImpl
(
DataSource
dataSource
)
{
this
.
jdbcTemplate
=
new
JdbcTemplate
(
dataSource
);
}
@Override
public
void
createDatabase
(
String
dbname
)
{
...
...
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/SubTableMapperImpl.java
浏览文件 @
305cbd8c
package
com.taosdata.taosdemo.dao
;
import
com.taosdata.taosdemo.dao.SubTableMapper
;
import
com.taosdata.taosdemo.domain.SubTableMeta
;
import
com.taosdata.taosdemo.domain.SubTableValue
;
import
com.taosdata.taosdemo.utils.SqlSpeller
;
import
org.apache.log4j.Logger
;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
javax.sql.DataSource
;
import
java.util.List
;
public
class
SubTableMapperImpl
implements
SubTableMapper
{
private
JdbcTemplate
jdbcTemplate
;
private
static
final
Logger
logger
=
Logger
.
getLogger
(
SubTableMapperImpl
.
class
);
private
final
JdbcTemplate
jdbcTemplate
;
public
SubTableMapperImpl
(
DataSource
dataSource
)
{
this
.
jdbcTemplate
=
new
JdbcTemplate
(
dataSource
);
}
@Override
public
void
createUsingSuperTable
(
SubTableMeta
subTableMeta
)
{
String
sql
=
SqlSpeller
.
createTableUsingSuperTable
(
subTableMeta
);
logger
.
info
(
"SQL >>> "
+
sql
);
jdbcTemplate
.
execute
(
sql
);
}
@Override
public
int
insertOneTableMultiValues
(
SubTableValue
subTableValue
)
{
String
sql
=
SqlSpeller
.
insertOneTableMultiValues
(
subTableValue
);
logger
.
info
(
"SQL >>> "
+
sql
);
return
jdbcTemplate
.
update
(
sql
);
}
@Override
public
int
insertOneTableMultiValuesUsingSuperTable
(
SubTableValue
subTableValue
)
{
String
sql
=
SqlSpeller
.
insertOneTableMultiValuesUsingSuperTable
(
subTableValue
);
logger
.
info
(
"SQL >>> "
+
sql
);
return
jdbcTemplate
.
update
(
sql
);
}
@Override
public
int
insertMultiTableMultiValues
(
List
<
SubTableValue
>
tables
)
{
String
sql
=
SqlSpeller
.
insertMultiSubTableMultiValues
(
tables
);
logger
.
info
(
"SQL >>> "
+
sql
);
return
jdbcTemplate
.
update
(
sql
);
}
@Override
public
int
insertMultiTableMultiValuesUsingSuperTable
(
List
<
SubTableValue
>
tables
)
{
String
sql
=
SqlSpeller
.
insertMultiTableMultiValuesUsingSuperTable
(
tables
);
logger
.
info
(
"SQL >>> "
+
sql
);
return
jdbcTemplate
.
update
(
sql
);
}
}
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/dao/SuperTableMapperImpl.java
浏览文件 @
305cbd8c
package
com.taosdata.taosdemo.dao
;
import
com.taosdata.taosdemo.dao.SuperTableMapper
;
import
com.taosdata.taosdemo.domain.SuperTableMeta
;
import
com.taosdata.taosdemo.utils.SqlSpeller
;
import
org.apache.log4j.Logger
;
import
org.springframework.jdbc.core.JdbcTemplate
;
public
class
SuperTableMapperImpl
implements
SuperTableMapper
{
import
javax.sql.DataSource
;
public
class
SuperTableMapperImpl
implements
SuperTableMapper
{
private
static
final
Logger
logger
=
Logger
.
getLogger
(
SuperTableMapperImpl
.
class
);
private
JdbcTemplate
jdbcTemplate
;
public
SuperTableMapperImpl
(
DataSource
dataSource
)
{
this
.
jdbcTemplate
=
new
JdbcTemplate
(
dataSource
);
}
@Override
public
void
createSuperTable
(
SuperTableMeta
tableMetadata
)
{
String
sql
=
SqlSpeller
.
createSuperTable
(
tableMetadata
);
logger
.
info
(
"SQL >>> "
+
sql
);
jdbcTemplate
.
execute
(
sql
);
}
@Override
public
void
dropSuperTable
(
String
database
,
String
name
)
{
jdbcTemplate
.
execute
(
"drop table if exists "
+
database
+
"."
+
name
);
String
sql
=
"drop table if exists "
+
database
+
"."
+
name
;
logger
.
info
(
"SQL >>> "
+
sql
);
jdbcTemplate
.
execute
(
sql
);
}
}
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/DatabaseService.java
浏览文件 @
305cbd8c
package
com.taosdata.taosdemo.service
;
import
com.taosdata.taosdemo.dao.DatabaseMapper
;
import
org.apache.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.taosdata.taosdemo.dao.DatabaseMapperImpl
;
import
javax.sql.DataSource
;
import
java.sql.Connection
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.util.Map
;
@Service
public
class
DatabaseService
{
@Autowired
private
DatabaseMapper
databaseMapper
;
private
DataSource
dataSource
;
private
static
Logger
logger
=
Logger
.
getLogger
(
DatabaseService
.
class
);
private
final
DatabaseMapper
databaseMapper
;
public
DatabaseService
(
DataSource
dataSource
)
{
this
.
data
Source
=
dataSource
;
this
.
data
baseMapper
=
new
DatabaseMapperImpl
(
dataSource
)
;
}
// 建库,指定 name
public
int
createDatabase
(
String
database
)
{
try
{
Connection
connection
=
dataSource
.
getConnection
();
Statement
statement
=
connection
.
createStatement
();
statement
.
execute
(
"create database "
+
database
);
statement
.
close
();
connection
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
return
0
;
// return databaseMapper.createDatabase(database);
public
void
createDatabase
(
String
database
)
{
databaseMapper
.
createDatabase
(
database
);
}
// 建库,指定参数 keep,days,replica等
public
int
createDatabase
(
Map
<
String
,
String
>
map
)
{
public
void
createDatabase
(
Map
<
String
,
String
>
map
)
{
if
(
map
.
isEmpty
())
return
0
;
if
(
map
.
containsKey
(
"database"
)
&&
map
.
size
()
==
1
)
return
;
if
(
map
.
containsKey
(
"database"
)
&&
map
.
size
()
==
1
)
{
createDatabase
(
map
.
get
(
"database"
));
// return databaseMapper.createDatabase(map.get("database"));
// return databaseMapper.createDatabaseWithParameters(map);
try
{
Connection
connection
=
dataSource
.
getConnection
();
Statement
statement
=
connection
.
createStatement
();
String
sql
=
"create database if not exists "
+
map
.
get
(
"database"
)
+
" keep "
+
map
.
get
(
"keep"
)
+
" days "
+
map
.
get
(
"days"
)
+
" replica "
+
map
.
get
(
"replica"
);
logger
.
info
(
">>> "
+
sql
);
statement
.
execute
(
sql
);
statement
.
close
();
connection
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
return
;
}
return
0
;
databaseMapper
.
createDatabaseWithParameters
(
map
)
;
}
// drop database
public
int
dropDatabase
(
String
dbname
)
{
try
{
Connection
connection
=
dataSource
.
getConnection
();
Statement
statement
=
connection
.
createStatement
();
String
sql
=
"drop database if exists "
+
dbname
;
logger
.
info
(
">>> "
+
sql
);
statement
.
execute
(
sql
);
statement
.
close
();
connection
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
return
0
;
public
void
dropDatabase
(
String
dbname
)
{
databaseMapper
.
dropDatabase
(
dbname
);
}
// use database
public
int
useDatabase
(
String
dbname
)
{
try
{
Connection
connection
=
dataSource
.
getConnection
();
Statement
statement
=
connection
.
createStatement
();
String
sql
=
"use "
+
dbname
;
logger
.
info
(
">>> "
+
sql
);
statement
.
execute
(
sql
);
statement
.
close
();
connection
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
return
0
;
// return databaseMapper.useDatabase(dbname);
public
void
useDatabase
(
String
dbname
)
{
databaseMapper
.
useDatabase
(
dbname
);
}
}
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/InsertTask.java
浏览文件 @
305cbd8c
...
...
@@ -82,7 +82,7 @@ public class InsertTask implements Callable<Integer> {
SubTableValueGenerator
.
disrupt
(
data
,
rate
,
range
);
}
// insert
SubTableService
subTableService
=
new
SubTableService
(
connection
);
SubTableService
subTableService
=
new
SubTableService
(
dataSource
);
if
(
autoCreateTable
)
{
subTableService
.
insertAutoCreateTable
(
data
);
}
else
{
...
...
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/SubTableService.java
浏览文件 @
305cbd8c
package
com.taosdata.taosdemo.service
;
import
com.taosdata.taosdemo.dao.SubTableMapper
;
import
com.taosdata.taosdemo.domain.*
;
import
com.taosdata.taosdemo.dao.SubTableMapperImpl
;
import
com.taosdata.taosdemo.domain.SubTableMeta
;
import
com.taosdata.taosdemo.domain.SubTableValue
;
import
com.taosdata.taosdemo.domain.SuperTableMeta
;
import
com.taosdata.taosdemo.service.data.SubTableMetaGenerator
;
import
org.apache.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
javax.sql.DataSource
;
import
java.sql.Connection
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.Future
;
import
java.util.concurrent.TimeUnit
;
@Service
public
class
SubTableService
extends
AbstractService
{
private
static
Logger
logger
=
Logger
.
getLogger
(
SubTableService
.
class
);
@Autowired
private
SubTableMapper
mapper
;
private
Connection
connection
;
public
SubTableService
()
{
}
public
SubTableService
(
Connection
connection
)
{
this
.
connection
=
connection
;
}
/**
* 1. 选择database,找到所有supertable
* 2. 选择supertable,可以拿到表结构,包括field和tag
* 3. 指定子表的前缀和个数
* 4. 指定创建子表的线程数
*/
//TODO:指定database、supertable、子表前缀、子表个数、线程数
// 多线程创建表,指定线程个数
public
int
createSubTable
(
List
<
SubTableMeta
>
subTables
,
int
threadSize
)
{
ExecutorService
executor
=
Executors
.
newFixedThreadPool
(
threadSize
);
List
<
Future
<
Integer
>>
futureList
=
new
ArrayList
<>();
for
(
SubTableMeta
subTableMeta
:
subTables
)
{
executor
.
submit
(()
->
createSubTable
(
subTableMeta
));
}
executor
.
shutdown
();
return
getAffectRows
(
futureList
);
public
SubTableService
(
DataSource
datasource
)
{
this
.
mapper
=
new
SubTableMapperImpl
(
datasource
);
}
public
void
createSubTable
(
SuperTableMeta
superTableMeta
,
long
numOfTables
,
String
prefixOfTable
,
int
numOfThreadsForCreate
)
{
...
...
@@ -66,7 +34,7 @@ public class SubTableService extends AbstractService {
public
void
createSubTable
(
SuperTableMeta
superTableMeta
,
String
tableName
)
{
// 构造数据
SubTableMeta
meta
=
SubTableMetaGenerator
.
generate
(
superTableMeta
,
tableName
);
mapper
.
createUsingSuper
Table
(
meta
);
createSub
Table
(
meta
);
}
// 创建一张子表,可以指定database,supertable,tablename,tag值
...
...
@@ -74,11 +42,6 @@ public class SubTableService extends AbstractService {
mapper
.
createUsingSuperTable
(
subTableMeta
);
}
// 单线程创建多张子表,每张子表分别可以指定自己的database,supertable,tablename,tag值
public
int
createSubTable
(
List
<
SubTableMeta
>
subTables
)
{
return
createSubTable
(
subTables
,
1
);
}
/*************************************************************************************************************************/
// 插入:多线程,多表
public
int
insert
(
List
<
SubTableValue
>
subTableValues
,
int
threadSize
,
int
frequency
)
{
...
...
@@ -89,19 +52,6 @@ public class SubTableService extends AbstractService {
return
getAffectRows
(
future
);
}
// 插入:多线程,多表, 自动建表
// public int insertAutoCreateTable(List<SubTableValue> subTableValues, int threadSize, int frequency) {
// long a = System.currentTimeMillis();
// ExecutorService executor = Executors.newFixedThreadPool(threadSize);
// long b = System.currentTimeMillis();
// Future<Integer> future = executor.submit(() -> insertAutoCreateTable(subTableValues));
// executor.shutdown();
// int affectRows = getAffectRows(future);
// long c = System.currentTimeMillis();
// logger.info(">>> total : " + (c - a) + " ms, thread: " + (b - a) + " ms, insert : " + (c - b) + " ms.");
// return affectRows;
// }
// 插入:单表,insert into xxx values(),()...
public
int
insert
(
SubTableValue
subTableValue
)
{
return
mapper
.
insertOneTableMultiValues
(
subTableValue
);
...
...
@@ -117,70 +67,9 @@ public class SubTableService extends AbstractService {
return
mapper
.
insertOneTableMultiValuesUsingSuperTable
(
subTableValue
);
}
@Autowired
private
DataSource
dataSource
;
// 插入:多表,自动建表, insert into xxx using XXX tags(...) values(),()... xxx using XXX tags(...) values(),()...
public
int
insertAutoCreateTable
(
List
<
SubTableValue
>
subTableValues
)
{
int
affectRows
=
0
;
try
{
String
sql
=
sql
(
subTableValues
);
logger
.
info
(
">>> SQL : "
+
sql
);
Statement
statement
=
connection
.
createStatement
();
affectRows
=
statement
.
executeUpdate
(
sql
);
statement
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
return
affectRows
;
// return mapper.insertMultiTableMultiValuesUsingSuperTable(subTableValues);
}
private
String
sql
(
List
<
SubTableValue
>
subTableValues
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"insert into "
);
for
(
int
i
=
0
;
i
<
subTableValues
.
size
();
i
++)
{
SubTableValue
subTableValue
=
subTableValues
.
get
(
i
);
sb
.
append
(
subTableValue
.
getDatabase
()
+
"."
+
subTableValue
.
getName
()
+
" using "
+
subTableValue
.
getDatabase
()
+
"."
+
subTableValue
.
getSupertable
()
+
" tags ("
);
for
(
int
j
=
0
;
j
<
subTableValue
.
getTags
().
size
();
j
++)
{
TagValue
tagValue
=
subTableValue
.
getTags
().
get
(
j
);
if
(
j
==
0
)
sb
.
append
(
"'"
+
tagValue
.
getValue
()
+
"'"
);
else
sb
.
append
(
", '"
+
tagValue
.
getValue
()
+
"'"
);
}
sb
.
append
(
") values"
);
for
(
int
j
=
0
;
j
<
subTableValue
.
getValues
().
size
();
j
++)
{
sb
.
append
(
"("
);
RowValue
rowValue
=
subTableValue
.
getValues
().
get
(
j
);
for
(
int
k
=
0
;
k
<
rowValue
.
getFields
().
size
();
k
++)
{
FieldValue
fieldValue
=
rowValue
.
getFields
().
get
(
k
);
if
(
k
==
0
)
// sb.append("" + timestamp.getAndIncrement());
sb
.
append
(
""
+
fieldValue
.
getValue
()
+
""
);
else
sb
.
append
(
", '"
+
fieldValue
.
getValue
()
+
"'"
);
}
sb
.
append
(
") "
);
}
}
return
sb
.
toString
();
}
private
static
void
sleep
(
int
sleep
)
{
if
(
sleep
<=
0
)
return
;
try
{
TimeUnit
.
MILLISECONDS
.
sleep
(
sleep
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
return
mapper
.
insertMultiTableMultiValuesUsingSuperTable
(
subTableValues
);
}
/********************************************************************/
}
tests/examples/JDBC/taosdemo/src/main/java/com/taosdata/taosdemo/service/SuperTableService.java
浏览文件 @
305cbd8c
package
com.taosdata.taosdemo.service
;
import
com.taosdata.taosdemo.dao.SuperTableMapper
;
import
com.taosdata.taosdemo.dao.SuperTableMapperImpl
;
import
com.taosdata.taosdemo.domain.SuperTableMeta
;
import
com.taosdata.taosdemo.utils.SqlSpeller
;
import
org.apache.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
javax.sql.DataSource
;
import
java.sql.Connection
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
@Service
public
class
SuperTableService
{
private
static
Logger
logger
=
Logger
.
getLogger
(
SuperTableService
.
class
);
@Autowired
private
SuperTableMapper
superTableMapper
;
private
DataSource
dataSource
;
public
SuperTableService
(
DataSource
dataSource
)
{
this
.
dataSource
=
dataSource
;
this
.
superTableMapper
=
new
SuperTableMapperImpl
(
dataSource
)
;
}
// 创建超级表,指定每个field的名称和类型,每个tag的名称和类型
public
int
create
(
SuperTableMeta
superTableMeta
)
{
int
result
=
0
;
try
{
Connection
connection
=
dataSource
.
getConnection
();
Statement
statement
=
connection
.
createStatement
();
String
sql
=
SqlSpeller
.
createSuperTable
(
superTableMeta
);
logger
.
info
(
">>> "
+
sql
);
result
=
statement
.
executeUpdate
(
sql
);
statement
.
close
();
connection
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
return
result
;
public
void
create
(
SuperTableMeta
superTableMeta
)
{
superTableMapper
.
createSuperTable
(
superTableMeta
);
}
public
void
drop
(
String
database
,
String
name
)
{
...
...
tests/examples/JDBC/taosdemo/src/test/java/com/taosdata/taosdemo/service/SubTableServiceTest.java
浏览文件 @
305cbd8c
...
...
@@ -9,6 +9,7 @@ import java.util.ArrayList;
import
java.util.List
;
public
class
SubTableServiceTest
{
private
SubTableService
service
;
private
List
<
SubTableMeta
>
subTables
;
...
...
@@ -31,13 +32,11 @@ public class SubTableServiceTest {
@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
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录