From e540ff93a217608397ef0ebfd77d162e3a6d9ee9 Mon Sep 17 00:00:00 2001
From: sheyanjie-qq <249478495@qq.com>
Date: Wed, 5 Feb 2025 17:29:50 +0800
Subject: [PATCH] resolve jdbc demo trivy issues
---
docs/examples/JDBC/mybatisplus-demo/pom.xml | 23 +++++++++-
.../config/MybatisPlusConfig.java | 42 +++++++++----------
.../mybatisplusdemo/mapper/MetersMapper.java | 12 +-----
.../mapper/TemperatureMapper.java | 3 --
.../mybatisplusdemo/mapper/WeatherMapper.java | 2 +-
.../service/DatabaseConnectionService.java | 19 +++++++++
.../service/TemperatureService.java | 26 ++++++++++++
.../mapper/MetersMapperTest.java | 20 +++++++--
.../mapper/TemperatureMapperTest.java | 11 +++--
.../mapper/WeatherMapperTest.java | 4 +-
docs/examples/JDBC/springbootdemo/pom.xml | 2 +-
11 files changed, 115 insertions(+), 49 deletions(-)
create mode 100644 docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/service/DatabaseConnectionService.java
create mode 100644 docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/service/TemperatureService.java
diff --git a/docs/examples/JDBC/mybatisplus-demo/pom.xml b/docs/examples/JDBC/mybatisplus-demo/pom.xml
index 322842ea3e..30b3f7792b 100644
--- a/docs/examples/JDBC/mybatisplus-demo/pom.xml
+++ b/docs/examples/JDBC/mybatisplus-demo/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.4.0
+ 2.7.18
com.taosdata.example
@@ -18,6 +18,18 @@
1.8
+
+
+
+ com.baomidou
+ mybatis-plus-bom
+ 3.5.10.1
+ pom
+ import
+
+
+
+
org.springframework.boot
@@ -28,14 +40,21 @@
lombok
true
+
com.baomidou
mybatis-plus-boot-starter
- 3.1.2
+
+
+
+
+ com.baomidou
+ mybatis-plus-jsqlparser-4.9
com.h2database
h2
+ 2.3.232
runtime
diff --git a/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/config/MybatisPlusConfig.java b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/config/MybatisPlusConfig.java
index a6ac7f7fc2..fc18f902a1 100644
--- a/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/config/MybatisPlusConfig.java
+++ b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/config/MybatisPlusConfig.java
@@ -1,34 +1,30 @@
package com.taosdata.example.mybatisplusdemo.config;
-import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+import java.util.Collections;
+
+@EnableTransactionManagement
@Configuration
+@MapperScan("com.taosdata.example.mybatisplusdemo.mapper")
public class MybatisPlusConfig {
-
- /** mybatis 3.4.1 pagination config start ***/
-// @Bean
-// public MybatisPlusInterceptor mybatisPlusInterceptor() {
-// MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
-// interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
-// return interceptor;
-// }
-
-// @Bean
-// public ConfigurationCustomizer configurationCustomizer() {
-// return configuration -> configuration.setUseDeprecatedExecutor(false);
-// }
-
+ /**
+ * 添加分页插件
+ */
@Bean
- public PaginationInterceptor paginationInterceptor() {
-// return new PaginationInterceptor();
- PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
- //TODO: mybatis-plus do not support TDengine, use postgresql Dialect
- paginationInterceptor.setDialectType("postgresql");
-
- return paginationInterceptor;
+ public MybatisPlusInterceptor mybatisPlusInterceptor() {
+ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加
+ // 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
+ return interceptor;
}
-
}
diff --git a/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/MetersMapper.java b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/MetersMapper.java
index 441c340886..f3eab76d8c 100644
--- a/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/MetersMapper.java
+++ b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/MetersMapper.java
@@ -5,6 +5,7 @@ import com.taosdata.example.mybatisplusdemo.domain.Meters;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
+import org.apache.ibatis.executor.BatchResult;
import java.util.List;
@@ -15,17 +16,6 @@ public interface MetersMapper extends BaseMapper {
@Insert("insert into meters (tbname, ts, groupid, location, current, voltage, phase) values(#{tbname}, #{ts}, #{groupid}, #{location}, #{current}, #{voltage}, #{phase})")
int insertOne(Meters one);
-
- @Insert({
- ""
- })
- int insertBatch(@Param("list") List metersList);
-
@Update("drop stable if exists meters")
void dropTable();
}
diff --git a/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/TemperatureMapper.java b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/TemperatureMapper.java
index 3e122524d5..a43a40a89e 100644
--- a/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/TemperatureMapper.java
+++ b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/TemperatureMapper.java
@@ -11,9 +11,6 @@ public interface TemperatureMapper extends BaseMapper {
@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();
diff --git a/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/WeatherMapper.java b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/WeatherMapper.java
index 1f0338db34..04d26202a0 100644
--- a/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/WeatherMapper.java
+++ b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/mapper/WeatherMapper.java
@@ -10,7 +10,7 @@ public interface WeatherMapper extends BaseMapper {
@Update("CREATE TABLE if not exists weather(ts timestamp, temperature float, humidity int, location nchar(100))")
int createTable();
- @Insert("insert into weather (ts, temperature, humidity, location) values(#{ts}, #{temperature}, #{humidity}, #{location})")
+ @Insert("insert into weather (ts, temperature, humidity, location) values(#{ts}, #{temperature}, #{humidity}, #{location, jdbcType=NCHAR})")
int insertOne(Weather one);
@Update("drop table if exists weather")
diff --git a/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/service/DatabaseConnectionService.java b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/service/DatabaseConnectionService.java
new file mode 100644
index 0000000000..1c1a62cee5
--- /dev/null
+++ b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/service/DatabaseConnectionService.java
@@ -0,0 +1,19 @@
+package com.taosdata.example.mybatisplusdemo.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.SQLException;
+
+@Service
+public class DatabaseConnectionService {
+
+ @Autowired
+ private DataSource dataSource;
+
+ public Connection getConnection() throws SQLException {
+ return dataSource.getConnection();
+ }
+}
diff --git a/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/service/TemperatureService.java b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/service/TemperatureService.java
new file mode 100644
index 0000000000..c5116345a1
--- /dev/null
+++ b/docs/examples/JDBC/mybatisplus-demo/src/main/java/com/taosdata/example/mybatisplusdemo/service/TemperatureService.java
@@ -0,0 +1,26 @@
+package com.taosdata.example.mybatisplusdemo.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+@Service
+public class TemperatureService {
+ @Autowired
+ private DatabaseConnectionService databaseConnectionService;
+
+ public void createTable(String tableName, String location, int tbIndex) throws SQLException {
+
+
+ try (Connection connection = databaseConnectionService.getConnection();
+ Statement statement = connection.createStatement()) {
+ // 执行 SQL 查询
+ statement.executeUpdate("create table " + tableName + " using temperature tags( '" + location +"', " + tbIndex + ")");
+ }
+ }
+}
diff --git a/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/MetersMapperTest.java b/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/MetersMapperTest.java
index 2d8458e9d9..8405777ab0 100644
--- a/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/MetersMapperTest.java
+++ b/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/MetersMapperTest.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.taosdata.example.mybatisplusdemo.domain.Meters;
import com.taosdata.example.mybatisplusdemo.domain.Weather;
+import org.apache.ibatis.executor.BatchResult;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -18,6 +19,8 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Random;
+import static java.sql.Statement.SUCCESS_NO_INFO;
+
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class MetersMapperTest {
@@ -63,8 +66,19 @@ public class MetersMapperTest {
metersList.add(one);
}
- int affectRows = mapper.insertBatch(metersList);
- Assert.assertEquals(100, affectRows);
+ List affectRowsList = mapper.insert(metersList, 10000);
+
+ long totalAffectedRows = 0;
+ for (BatchResult batchResult : affectRowsList) {
+ int[] updateCounts = batchResult.getUpdateCounts();
+ for (int status : updateCounts) {
+ if (status == SUCCESS_NO_INFO) {
+ totalAffectedRows++;
+ }
+ }
+ }
+
+ Assert.assertEquals(100, totalAffectedRows);
}
@Test
@@ -93,7 +107,7 @@ public class MetersMapperTest {
@Test
public void testSelectCount() {
- int count = mapper.selectCount(null);
+ long count = mapper.selectCount(null);
// Assert.assertEquals(5, count);
System.out.println(count);
}
diff --git a/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/TemperatureMapperTest.java b/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/TemperatureMapperTest.java
index 4d9dbf8d2f..016466ffec 100644
--- a/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/TemperatureMapperTest.java
+++ b/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/TemperatureMapperTest.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.taosdata.example.mybatisplusdemo.domain.Temperature;
+import com.taosdata.example.mybatisplusdemo.service.TemperatureService;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -13,6 +14,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import java.sql.ResultSet;
+import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.List;
@@ -22,18 +25,20 @@ import java.util.Random;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TemperatureMapperTest {
+ @Autowired
+ private TemperatureService temperatureService;
private static Random random = new Random(System.currentTimeMillis());
private static String[] locations = {"北京", "上海", "深圳", "广州", "杭州"};
@Before
- public void before() {
+ public void before() throws SQLException {
mapper.dropSuperTable();
// create table temperature
mapper.createSuperTable();
// create table t_X using temperature
for (int i = 0; i < 10; i++) {
- mapper.createTable("t" + i, locations[random.nextInt(locations.length)], i);
+ temperatureService.createTable("t" + i, locations[i % locations.length], i);
}
// insert into table
int affectRows = 0;
@@ -107,7 +112,7 @@ public class TemperatureMapperTest {
* **/
@Test
public void testSelectCount() {
- int count = mapper.selectCount(null);
+ long count = mapper.selectCount(null);
Assert.assertEquals(10, count);
}
diff --git a/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/WeatherMapperTest.java b/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/WeatherMapperTest.java
index dba8abd1ed..19f2e70f3d 100644
--- a/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/WeatherMapperTest.java
+++ b/docs/examples/JDBC/mybatisplus-demo/src/test/java/com/taosdata/example/mybatisplusdemo/mapper/WeatherMapperTest.java
@@ -52,7 +52,7 @@ public class WeatherMapperTest {
one.setTemperature(random.nextFloat() * 50);
one.setHumidity(random.nextInt(100));
one.setLocation("望京");
- int affectRows = mapper.insert(one);
+ int affectRows = mapper.insertOne(one);
Assert.assertEquals(1, affectRows);
}
@@ -82,7 +82,7 @@ public class WeatherMapperTest {
@Test
public void testSelectCount() {
- int count = mapper.selectCount(null);
+ long count = mapper.selectCount(null);
// Assert.assertEquals(5, count);
System.out.println(count);
}
diff --git a/docs/examples/JDBC/springbootdemo/pom.xml b/docs/examples/JDBC/springbootdemo/pom.xml
index ed8c66544a..7d79b4b0b6 100644
--- a/docs/examples/JDBC/springbootdemo/pom.xml
+++ b/docs/examples/JDBC/springbootdemo/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.6.15
+ 2.7.18
com.taosdata.example