diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/tdengine/config/TDengineConfig.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/tdengine/config/TDengineConfig.java index c71a0812..07ccf9d1 100644 --- a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/tdengine/config/TDengineConfig.java +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/tdengine/config/TDengineConfig.java @@ -36,6 +36,8 @@ public class TDengineConfig { @Value("${spring.datasource.druid.tdengine-server.dbName}") private String dbName; + @Value("${spring.datasource.druid.tdengine-server.url}") + private String jdbc; @Bean(name = "tDengineDataSource") diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/tdengine/dao/DatabaseDAO.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/tdengine/dao/DatabaseDAO.java deleted file mode 100644 index 3044d692..00000000 --- a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/tdengine/dao/DatabaseDAO.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.ruoyi.iot.tdengine.dao; - -import org.springframework.stereotype.Repository; - -/** - * @package com.ruoyi.mysql.mysql.tdengine - * 类名: DatabaseMapper - * 描述: TODO - * 时间: 2022/5/16,0016 1:27 - * 开发人: wxy - */ -@Repository -public interface DatabaseDAO { - - int createDB(); - - int dropDatabase(); - - int useDatabase(); - - int createTable(); - - - -} diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/tdengine/init/ApplicationStarted.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/tdengine/init/ApplicationStarted.java index 44bc356f..d30f1061 100644 --- a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/tdengine/init/ApplicationStarted.java +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/tdengine/init/ApplicationStarted.java @@ -1,8 +1,11 @@ package com.ruoyi.iot.tdengine.init; +import com.alibaba.druid.pool.DruidDataSource; +import com.ruoyi.common.annotation.DataSource; import com.ruoyi.iot.tdengine.config.TDengineConfig; import com.ruoyi.iot.tdengine.dao.TDDeviceLogDAO; +import com.taosdata.jdbc.TSDBDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -12,6 +15,13 @@ import org.springframework.context.ApplicationContext; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; +import java.io.*; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Properties; + /** * 类名: ApplicationStarted * 描述: TODO @@ -26,15 +36,24 @@ public class ApplicationStarted implements ApplicationRunner { @Autowired private ApplicationContext applicationContext; + private DruidDataSource dataSource; + + private TDengineConfig dengineConfig; + + private TDDeviceLogDAO deviceLogMapper; + + @Override public void run(ApplicationArguments args) { + //先获取TDengine的配置,检测TDengine是否已经配置 if (containBean(TDengineConfig.class)) { - TDengineConfig tDengineConfig = applicationContext.getBean(TDengineConfig.class); - TDDeviceLogDAO tDDeviceLogDAO = applicationContext.getBean(TDDeviceLogDAO.class); - initTDengine(tDengineConfig, tDDeviceLogDAO); + this.dengineConfig = applicationContext.getBean(TDengineConfig.class); + this.dataSource = applicationContext.getBean("tDengineDataSource", DruidDataSource.class); + this.deviceLogMapper= applicationContext.getBean(TDDeviceLogDAO.class); + initTDengine(this.dengineConfig.getDbName()); System.out.println("初始化TDengine成功"); - }else{ + } else { System.out.println("MySQL初始化成功"); } } @@ -47,12 +66,12 @@ public class ApplicationStarted implements ApplicationRunner { * @date 2022/5/22,0022 14:27 * @author wxy */ - public void initTDengine(TDengineConfig dengineConfig, TDDeviceLogDAO deviceLogMapper) { + public void initTDengine(String dbName) { try { - String dbName = dengineConfig.getDbName(); - int db = deviceLogMapper.createDB(dbName); + createDatabase(); + //创建数据库表 deviceLogMapper.createSTable(dbName); - System.out.println(db); + System.out.println("完成超级表的创建"); } catch (Exception e) { e.printStackTrace(); System.out.println("ERROR"); @@ -60,6 +79,43 @@ public class ApplicationStarted implements ApplicationRunner { } + /** + * @Method + * @Description 根据数据库连接自动创建数据库 + * @Param null + * @return + * @date 2022/5/24,0024 14:32 + * @author wxy + * + */ + private void createDatabase(){ + try { + String dbName = dengineConfig.getDbName(); + String jdbcUrl = dataSource.getRawJdbcUrl(); + String username = dataSource.getUsername(); + String password = dataSource.getPassword(); + jdbcUrl += ("&user=" + username); + jdbcUrl += ("&password=" + password); + int startIndex = jdbcUrl.indexOf('/',12); + int endIndex = jdbcUrl.indexOf('?'); + String newJdbcUrl = jdbcUrl.substring(0,startIndex); + newJdbcUrl= newJdbcUrl+jdbcUrl.substring(endIndex); + System.out.println(newJdbcUrl); + + Properties connProps = new Properties(); + connProps.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8"); + connProps.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8"); + connProps.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); + Connection conn = DriverManager.getConnection(newJdbcUrl, connProps); + conn.createStatement().execute(String.format("create database if not exists %s;",dbName)); + conn.close(); + System.out.println("完成数据库创建"); + } catch (Exception e) { + e.printStackTrace(); + System.out.println("ERROR"); + } + } + /** * @return * @Method containBean @@ -76,4 +132,6 @@ public class ApplicationStarted implements ApplicationRunner { return true; } } + + } diff --git a/springboot/wumei-iot/src/main/resources/mapper/tdengine/DatabaseMapper.xml b/springboot/wumei-iot/src/main/resources/mapper/tdengine/DatabaseMapper.xml deleted file mode 100644 index f5a6853a..00000000 --- a/springboot/wumei-iot/src/main/resources/mapper/tdengine/DatabaseMapper.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - create database if not exists ${dbName}; - - - - - DROP database if exists ${dbName}; - - - - - use ${dbName}; - - - - create stable if not exists ${tableName} - (ts timestamp, - log_id BIGINT, - identity NCHAR(100), - log_type NCHAR(20), - log_value NCHAR(100), - device_id BIGINT, - device_name NCHAR(100), - serial_number NCHAR(100), - is_monitor int, - create_by NCHAR(100), - create_time timestamp, - remark NCHAR(1000), - ); - - - - \ No newline at end of file diff --git a/springboot/wumei-iot/src/main/resources/mapper/tdengine/TDDeviceLogMapper.xml b/springboot/wumei-iot/src/main/resources/mapper/tdengine/TDDeviceLogMapper.xml index 1bf0071b..1a0e4ba8 100644 --- a/springboot/wumei-iot/src/main/resources/mapper/tdengine/TDDeviceLogMapper.xml +++ b/springboot/wumei-iot/src/main/resources/mapper/tdengine/TDDeviceLogMapper.xml @@ -42,7 +42,6 @@ - create STABLE if not exists ${database}.device_log ( ts timestamp,