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