change
This commit is contained in:
parent
c623b4da7b
commit
16b35ba58c
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
taosdemo是为了给TDengine
|
||||
需求:
|
||||
1. 可以读lowa的配置文件
|
||||
2. 支持对JNI方式和Restful方式的taos-driver
|
|
@ -1,18 +1,15 @@
|
|||
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;
|
||||
}
|
||||
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
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);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
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);
|
||||
}
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
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:一个批次写多张表
|
||||
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
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;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
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:统计查询表
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
package com.taosdata.taosdemo.controller;
|
||||
|
||||
public class TableController {
|
||||
|
||||
//TODO:创建普通表,create table(ts timestamp, temperature float)
|
||||
|
||||
//TODO:创建普通表,指定表的列数,包括第一列timestamp
|
||||
|
||||
//TODO:创建普通表,指定表每列的name和type
|
||||
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
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
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
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-->
|
||||
|
|
@ -1,20 +1,16 @@
|
|||
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 -->
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
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);
|
||||
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
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);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
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.utils.SqlSpeller;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class SubTableMapperImpl implements SubTableMapper {
|
||||
|
||||
private JdbcTemplate jdbcTemplate;
|
||||
|
||||
@Override
|
||||
public void createUsingSuperTable(SubTableMeta subTableMeta) {
|
||||
String sql = SqlSpeller.createTableUsingSuperTable(subTableMeta);
|
||||
jdbcTemplate.execute(sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertOneTableMultiValues(SubTableValue subTableValue) {
|
||||
String sql = SqlSpeller.insertOneTableMultiValues(subTableValue);
|
||||
return jdbcTemplate.update(sql);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int insertOneTableMultiValuesUsingSuperTable(SubTableValue subTableValue) {
|
||||
String sql = SqlSpeller.insertOneTableMultiValuesUsingSuperTable(subTableValue);
|
||||
return jdbcTemplate.update(sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertMultiTableMultiValues(List<SubTableValue> tables) {
|
||||
String sql = SqlSpeller.insertMultiSubTableMultiValues(tables);
|
||||
return jdbcTemplate.update(sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertMultiTableMultiValuesUsingSuperTable(List<SubTableValue> tables) {
|
||||
String sql = SqlSpeller.insertMultiTableMultiValuesUsingSuperTable(tables);
|
||||
return jdbcTemplate.update(sql);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
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);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
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);
|
||||
}
|
||||
}
|
|
@ -8,7 +8,6 @@ import java.util.List;
|
|||
public class RowValue {
|
||||
private List<FieldValue> fields;
|
||||
|
||||
|
||||
public RowValue(List<FieldValue> fields) {
|
||||
this.fields = fields;
|
||||
}
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
<?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>
|
|
@ -1,81 +0,0 @@
|
|||
<?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>
|
|
@ -1,41 +0,0 @@
|
|||
<?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>
|
|
@ -1,68 +0,0 @@
|
|||
<?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>
|
|
@ -1,38 +0,0 @@
|
|||
package com.taosdata.taosdemo.mapper.impl;
|
||||
|
||||
import com.taosdata.taosdemo.domain.SubTableMeta;
|
||||
import com.taosdata.taosdemo.domain.SubTableValue;
|
||||
import com.taosdata.taosdemo.mapper.SubTableMapper;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class SubTableMapperImpl implements SubTableMapper {
|
||||
|
||||
private JdbcTemplate jdbcTemplate;
|
||||
|
||||
@Override
|
||||
public int createUsingSuperTable(SubTableMeta subTableMeta) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertOneTableMultiValues(SubTableValue subTableValue) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertOneTableMultiValuesUsingSuperTable(SubTableValue subTableValue) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertMultiTableMultiValues(List<SubTableValue> tables) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertMultiTableMultiValuesUsingSuperTable(List<SubTableValue> tables) {
|
||||
return 0;
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
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;
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
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值
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
package com.taosdata.taosdemo.service;
|
||||
|
||||
import com.taosdata.taosdemo.domain.FieldMeta;
|
||||
import com.taosdata.taosdemo.dao.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) {
|
||||
|
|
|
@ -1,41 +1,25 @@
|
|||
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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,189 @@
|
|||
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();
|
||||
}
|
||||
}
|
|
@ -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
|
|
@ -5,6 +5,6 @@
|
|||
<title>Index</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Hello~~~</h1>
|
||||
<h1>Developing~~~</h1>
|
||||
</body>
|
||||
</html>
|
|
@ -1,13 +0,0 @@
|
|||
package com.taosdata.taosdemo;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@SpringBootTest
|
||||
class TaosdemoApplicationTests {
|
||||
|
||||
@Test
|
||||
void contextLoads() {
|
||||
}
|
||||
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
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");
|
||||
}
|
||||
}
|
|
@ -1,88 +0,0 @@
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,50 +0,0 @@
|
|||
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");
|
||||
}
|
||||
}
|
|
@ -1,142 +0,0 @@
|
|||
package com.taosdata.taosdemo.mapper;
|
||||
|
||||
import com.taosdata.taosdemo.domain.*;
|
||||
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;
|
||||
import java.util.Random;
|
||||
|
||||
@SpringBootTest
|
||||
@RunWith(SpringRunner.class)
|
||||
public class TableMapperTest {
|
||||
@Autowired
|
||||
private TableMapper tableMapper;
|
||||
private static Random random = new Random(System.currentTimeMillis());
|
||||
|
||||
@Test
|
||||
public void create() {
|
||||
TableMeta table = new TableMeta();
|
||||
table.setDatabase("test");
|
||||
table.setName("t1");
|
||||
List<FieldMeta> fields = new ArrayList<>();
|
||||
for (int i = 0; i < 3; i++) {
|
||||
FieldMeta field = new FieldMeta();
|
||||
field.setName("f" + (i + 1));
|
||||
field.setType("nchar(64)");
|
||||
fields.add(field);
|
||||
}
|
||||
table.setFields(fields);
|
||||
tableMapper.create(table);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void insertOneTableMultiValues() {
|
||||
TableValue table = new TableValue();
|
||||
table.setDatabase("test");
|
||||
table.setName("t1");
|
||||
List<RowValue> values = new ArrayList<>();
|
||||
for (int j = 0; j < 5; j++) {
|
||||
List<FieldValue> fields = new ArrayList<>();
|
||||
for (int k = 0; k < 2; k++) {
|
||||
FieldValue field = new FieldValue<>();
|
||||
field.setValue((k + 1) * 100);
|
||||
fields.add(field);
|
||||
}
|
||||
values.add(new RowValue(fields));
|
||||
}
|
||||
table.setValues(values);
|
||||
|
||||
tableMapper.insertOneTableMultiValues(table);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void insertOneTableMultiValuesWithCoulmns() {
|
||||
TableValue tableValue = new TableValue();
|
||||
tableValue.setDatabase("test");
|
||||
tableValue.setName("weather");
|
||||
// columns
|
||||
List<FieldMeta> columns = new ArrayList<>();
|
||||
for (int i = 0; i < 3; i++) {
|
||||
FieldMeta field = new FieldMeta();
|
||||
field.setName("f" + (i + 1));
|
||||
columns.add(field);
|
||||
}
|
||||
tableValue.setColumns(columns);
|
||||
// values
|
||||
List<RowValue> values = new ArrayList<>();
|
||||
for (int i = 0; i < 3; i++) {
|
||||
List<FieldValue> fields = new ArrayList<>();
|
||||
for (int j = 0; j < 3; j++) {
|
||||
FieldValue field = new FieldValue();
|
||||
field.setValue(j);
|
||||
fields.add(field);
|
||||
}
|
||||
values.add(new RowValue(fields));
|
||||
}
|
||||
tableValue.setValues(values);
|
||||
tableMapper.insertOneTableMultiValuesWithColumns(tableValue);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void insertMultiTableMultiValues() {
|
||||
List<TableValue> tables = new ArrayList<>();
|
||||
for (int i = 0; i < 3; i++) {
|
||||
TableValue table = new TableValue();
|
||||
table.setDatabase("test");
|
||||
table.setName("t" + (i + 1));
|
||||
List<RowValue> values = new ArrayList<>();
|
||||
for (int j = 0; j < 5; j++) {
|
||||
List<FieldValue> fields = new ArrayList<>();
|
||||
for (int k = 0; k < 2; k++) {
|
||||
FieldValue field = new FieldValue<>();
|
||||
field.setValue((k + 1) * 10);
|
||||
fields.add(field);
|
||||
}
|
||||
values.add(new RowValue(fields));
|
||||
}
|
||||
table.setValues(values);
|
||||
|
||||
tables.add(table);
|
||||
}
|
||||
tableMapper.insertMultiTableMultiValues(tables);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void insertMultiTableMultiValuesWithCoulumns() {
|
||||
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++) {
|
||||
FieldValue field = new FieldValue<>();
|
||||
field.setValue((k + 1) * 10);
|
||||
fields.add(field);
|
||||
}
|
||||
values.add(new RowValue(fields));
|
||||
}
|
||||
table.setValues(values);
|
||||
|
||||
tables.add(table);
|
||||
}
|
||||
tableMapper.insertMultiTableMultiValuesWithColumns(tables);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
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");
|
||||
}
|
||||
}
|
|
@ -1,50 +0,0 @@
|
|||
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);
|
||||
}
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
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);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
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));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,254 @@
|
|||
package com.taosdata.taosdemo.utils;
|
||||
|
||||
import com.taosdata.taosdemo.domain.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class SqlSpellerTest {
|
||||
|
||||
@Test
|
||||
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");
|
||||
List<FieldMeta> fields = new ArrayList<>();
|
||||
for (int i = 0; i < 3; i++) {
|
||||
FieldMeta field = new FieldMeta();
|
||||
field.setName("f" + (i + 1));
|
||||
field.setType("nchar(64)");
|
||||
fields.add(field);
|
||||
}
|
||||
table.setFields(fields);
|
||||
String sql = SqlSpeller.createTable(table);
|
||||
System.out.println(sql);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testInsertOneTableMultiValues() {
|
||||
TableValue table = new TableValue();
|
||||
table.setDatabase("test");
|
||||
table.setName("t1");
|
||||
List<RowValue> values = new ArrayList<>();
|
||||
for (int j = 0; j < 5; j++) {
|
||||
List<FieldValue> fields = new ArrayList<>();
|
||||
for (int k = 0; k < 2; k++) {
|
||||
FieldValue field = new FieldValue<>();
|
||||
field.setValue((k + 1) * 100);
|
||||
fields.add(field);
|
||||
}
|
||||
values.add(new RowValue(fields));
|
||||
}
|
||||
table.setValues(values);
|
||||
|
||||
String sql = SqlSpeller.insertOneTableMultiValues(table);
|
||||
System.out.println(sql);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void insertOneTableMultiValuesWithColumns() {
|
||||
TableValue tableValue = new TableValue();
|
||||
tableValue.setDatabase("test");
|
||||
tableValue.setName("weather");
|
||||
// columns
|
||||
List<FieldMeta> columns = new ArrayList<>();
|
||||
for (int i = 0; i < 3; i++) {
|
||||
FieldMeta field = new FieldMeta();
|
||||
field.setName("f" + (i + 1));
|
||||
columns.add(field);
|
||||
}
|
||||
tableValue.setColumns(columns);
|
||||
// values
|
||||
List<RowValue> values = new ArrayList<>();
|
||||
for (int i = 0; i < 3; i++) {
|
||||
List<FieldValue> fields = new ArrayList<>();
|
||||
for (int j = 0; j < 3; j++) {
|
||||
FieldValue field = new FieldValue();
|
||||
field.setValue(j);
|
||||
fields.add(field);
|
||||
}
|
||||
values.add(new RowValue(fields));
|
||||
}
|
||||
tableValue.setValues(values);
|
||||
|
||||
String sql = SqlSpeller.insertOneTableMultiValuesWithColumns(tableValue);
|
||||
System.out.println(sql);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void insertMultiTableMultiValuesWithColumns() {
|
||||
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++) {
|
||||
FieldValue field = new FieldValue<>();
|
||||
field.setValue((k + 1) * 10);
|
||||
fields.add(field);
|
||||
}
|
||||
values.add(new RowValue(fields));
|
||||
}
|
||||
table.setValues(values);
|
||||
tables.add(table);
|
||||
}
|
||||
|
||||
String sql = SqlSpeller.insertMultiTableMultiValuesWithColumns(tables);
|
||||
System.out.println(sql);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInsertMultiTableMultiValues() {
|
||||
List<TableValue> tables = new ArrayList<>();
|
||||
for (int i = 0; i < 3; i++) {
|
||||
TableValue table = new TableValue();
|
||||
table.setDatabase("test");
|
||||
table.setName("t" + (i + 1));
|
||||
List<RowValue> values = new ArrayList<>();
|
||||
for (int j = 0; j < 5; j++) {
|
||||
List<FieldValue> fields = new ArrayList<>();
|
||||
for (int k = 0; k < 2; k++) {
|
||||
FieldValue field = new FieldValue<>();
|
||||
field.setValue((k + 1) * 10);
|
||||
fields.add(field);
|
||||
}
|
||||
values.add(new RowValue(fields));
|
||||
}
|
||||
table.setValues(values);
|
||||
|
||||
tables.add(table);
|
||||
}
|
||||
|
||||
String sql = SqlSpeller.insertMultiTableMultiValues(tables);
|
||||
System.out.println(sql);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue