🌸 TDengined 🌸
🌸 注解形式添加
引入依赖
< dependency>
< groupId> com.baomidou</ groupId>
< artifactId> dynamic-datasource-spring-boot-starter</ artifactId>
< version> 3.5.2</ version>
</ dependency>
< dependency>
< groupId> com.taosdata.jdbc</ groupId>
< artifactId> taos-jdbcdriver</ artifactId>
< version> 3.1.0</ version>
</ dependency>
修改配置文件
spring :
datasource :
type : com.alibaba.druid.pool.DruidDataSource
dynamic :
primary : master
strict : true
datasource :
master :
driver-class-name : com.mysql.cj.jdbc.Driver
username : root
password : xxxxx
url : jdbc: mysql: //127.0.0.1: 3306/ifssc- iot? useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai
slave :
driver-class-name : com.taosdata.jdbc.rs.RestfulDriver
url : jdbc: TAOS- RS: //127.0.0.1: 6041/power? charset=UTF- 8&locale=en_US.UTF-8&timezone=UTC- 8
username : root
password : xxxxx
slave2 :
driver-class-name : com.taosdata.jdbc.rs.RestfulDriver
url : jdbc: TAOS- RS: //127.0.0.1: 6041/power? charset=UTF- 8&locale=en_US.UTF-8&timezone=UTC- 8
username : root
password : xxxxx
druid :
enable : true
max-active : 50
min-idle : 50
initial-size : 50
max-wait : 60000
time-between-eviction-runs-millis : 60000
validation-query : select server_status()
test-on-return : false
test-while-idle : true
test-on-borrow : false
async-close-connection-enable : true
async-init : true
实体类
@Data
@ApiModel ( description = "iot消息表" )
public class Temperature implements Serializable {
private Timestamp ts;
private float temperature;
private String location;
@TableField ( value = "tbindex" )
private int tbIndex;
protected Long id;
protected Long createBy;
protected Timestamp createTime;
protected Long updateBy;
protected Timestamp updateTime;
protected String remark;
@TableField ( select = false )
protected Integer delFlag;
}
mapper
public interface TemperatureMapper extends BaseMapper < Temperature > {
@Update ( "CREATE TABLE if not exists temperature(ts timestamp, temperature float) tags(location nchar(64), tbIndex int)" )
int createSuperTable ( ) ;
@Update ( "create table #{tbName} using temperature tags( #{location}, #{tbindex})" )
int createTable ( @Param ( "tbName" ) String tbName, @Param ( "location" ) String location, @Param ( "tbindex" ) int tbindex) ;
@Update ( "drop table if exists temperature" )
void dropSuperTable ( ) ;
@Insert ( "insert into t${tbIndex} (ts, temperature) values(#{ts}, #{temperature})" )
int insertOne ( Temperature one) ;
int insertBatch ( List < Temperature > list) ;
}
<?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.lyzw.cloud.iot.mapper.TemperatureMapper" >
< insert id = " insertBatch" >
insert into t8(ts, temperature, id, del_flag)
values
< foreach collection = " list" item = " item" separator = " ," >
(#{item.ts}, #{item.temperature}, #{item.id}, 0)
</ foreach>
</ insert>
</ mapper>
使用 直接加在使用的方法上即可
@Slave
public ResultVO test ( ) {
LambdaQueryWrapper < Temperature > lqw = new QueryWrapper < Temperature > ( ) . lambda ( )
. eq ( Temperature :: getLocation , "杭州" )
. last ( "limit 10" ) ;
List < Temperature > temperatureList = temperatureMapper. selectList ( lqw) ;
return ResultVO . success ( temperatureList) ;
}
@Slave
public ResultVO insertBatch ( ) {
List < Temperature > insertBatch = new ArrayList < > ( ) ;
for ( int j = 1 ; j <= 50 ; j++ ) {
Temperature one = new Temperature ( ) ;
long l = System . currentTimeMillis ( ) + j * 1000 ;
one. setTs ( new Timestamp ( l) ) ;
Random random = new Random ( System . currentTimeMillis ( ) ) ;
one. setTemperature ( random. nextFloat ( ) * IdUtil . getSnowflakeNextId ( ) ) ;
one. setId ( IdUtil . getSnowflakeNextId ( ) ) ;
one. setDelFlag ( 0 ) ;
insertBatch. add ( one) ;
}
int asd = temperatureMapper. insertBatch ( insertBatch) ;
return ResultVO . success ( ) ;
}