5-TDengine集成SpringBoot,MyBatis,MyBatisPlus

文章描述了在集成SpringBoot、TDengine和MyBatis的过程中遇到的问题,如依赖版本不匹配导致的SQL错误,以及批量插入数据时的时间戳处理bug。作者分享了解决方案和版本兼容性注意事项。
摘要由CSDN通过智能技术生成

官方已经自带了示例, https://github.com/taosdata/TDengine/tree/develop/tests/examples/JDBC ;这些示例在安装的客户端目录也有: /usr/local/taos/examples/JDBC 或者 C:\TDengine\examples\JDBC ,我把这些示例都跑了一遍,大体都可以跑起来,但是也存在一些问题或bug,尤其是一些测试用例不太严谨。我把改过的示例放到了我的GitHub上,修改的地方与说明在README.md中。

| No. | Name | Describe |

| :-: | :-: | — |

| 1 | JDBCDemo | Example codes for JDBC-JNI, JDBC-RESTful, Subscribe |

| 2 | connectionPools | Example codes for HikariCP, Druid, dbcp, c3p0 connection pools |

| 3 | SpringJdbcTemplate | Example codes for spring jdbcTemplate |

| 4 | mybatisplus-demo | Example codes for mybatis |

| 5 | springbootdemo | Example codes for springboot |

| 6 | taosdemo | This is an internal tool for testing Our JDBC-JNI, JDBC-RESTful, RESTful interfaces |

SpringBoot+TDengine+MyBatis

示例内容基本上就是建库、建表、插入数据,具体看代码即可。下面只列一下遇到的问题以及解决方法。

  • 依赖版本与服务端相兼容

com.taosdata.jdbc

taos-jdbcdriver

2.0.28

修改为:

com.taosdata.jdbc

taos-jdbcdriver

2.0.28

如果不修改依赖版本,当与服务端版本不一致时,则报错:

Cause: java.sql. SQLException: TDengine ERROR (216): Syntax error in SQL; uncategorized SQLException; SQL state []; error code [534]; TDengine ERROR (216): Syntax error in SQL; nested exception is java.sql. SQLException: TDengine ERROR (216): Syntax error in SQL] with root cause

关于版本兼容性说明,见官方这个表(我的服务端TDengine版本为:2.1.2.0):

2021-07-27-VersionCompatiable.jpg

  • TDengine批量插入数据遇到bug

这里用三种方式写了批量插入的语句(这里仅选择一个普通表批量插入,后续实现动态向多个普通表中批量插入数据),但是有一种写法按道理是正确的,但实际就是报错,懵逼一脸,经过调试,应该是个bug。。

第一种:使用后端sql语句中的时间戳作为主键,now+步长

insert into demo.t0 (ts, temperature, humidity) values

(now + #{index}a, #{weather.temperature}, #{weather.humidity})

Note: (now + #{index}a, #{weather.temperature}, #{weather.humidity}) 这样的写法,让我一度怀疑是不是不小心打错了,多打了个字母a。。

第二种:使用前端传参列表中的时间戳作为主键,表名在循环体外,这种方法报错,应该是个bug。。

insert into demo.t0 (ts, temperature, humidity) values

(#{weather.ts}, #{weather.temperature}, #{weather.humidity})

第一种方法可以,第二种就不行,让人怀疑人生。。然后就跟着调试了一番。

BatchInsertError

2021-07-30-Postman.jpg

2021-07-30-DebugErrorSQL.jpg

2021-07-30-DebugUtils.jpg

结果:在批量插入时,第二条记录的时间戳竟然没有自动加上引号,导致报错。。

第三种:使用前端传参列表中的时间戳作为主键,表名在循环体内,批量插入成功~

insert into

demo.t0 values

(#{weather.ts}, #{weather.temperature}, #{weather.humidity})

附: Postman 里的批量数据传参方式(向后端传递一个数组类型的参数):

curl --location --request POST ‘localhost:8080/weather/batch’ \

–header ‘Content-Type: application/json’ \

–data-raw '[

{

“ts”: 1626324781093,

“temperature”: 30.00000,

“humidity”: 99.00000

},

{

“ts”: 1626324981322,

“temperature”: 9.50609,

“humidity”: 10.00000

}

]’

或者(换了传递的时间戳格式):

curl --location --request POST ‘localhost:8080/weather/batch’ \

–header ‘Content-Type: application/json’ \

–data-raw '[

{

“ts”: “2021-07-19 14:53:01.093”,

“temperature”: 30.00000,

“humidity”: 99.00000

},

{

“ts”: “2021-07-19 14:53:01.200”,

“temperature”: 9.50609,

“humidity”: 10.00000

}

]’

Note: 我用的这个版本,已经不允许往超级表中直接插入数据了,但示例代码自带的README.md中还是这样写的: insert into test.weather (ts, temperature, humidity) values ,总之,文档不太严谨。。

SpringBoot+TDengine+MyBatisPlus

  • 依赖修改

同样,不贴源码了,下面只列一下遇到的问题以及解决方法。

  1. 删除了h2依赖

  2. druid依赖替换为starter

com.alibaba

druid-spring-boot-starter

1.1.17

  1. 升级了taos-jdbcdriver依赖版本

com.taosdata.jdbc

taos-jdbcdriver

2.0.30

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
…(img-gOGjJl0F-1714716007153)]

[外链图片转存中…(img-EnCt1Cj7-1714716007153)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值