From e1d7f0371d303fd57ef6064efabae65a5f4e8df7 Mon Sep 17 00:00:00 2001 From: theo <971366405@qq.com> Date: Thu, 4 Dec 2025 11:26:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(database):=20=E6=94=AF=E6=8C=81=E8=BE=BE?= =?UTF-8?q?=E6=A2=A6=E6=95=B0=E6=8D=AE=E5=BA=93=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在多个Mapper XML文件中增加对达梦数据库的SQL语句适配 - 为AiCommandRecordMapper.xml中的model字段添加反引号避免关键字冲突 - 为LogMapper.xml、UserMapper.xml和DatabaseMapper.xml添加databaseId属性区分不同数据库 - 新增MybatisConfig配置类用于识别数据库类型并注册VendorDatabaseIdProvider - pom.xml中引入达梦数据库驱动依赖DmJdbcDriver8 - 完善RoleMapper接口注释明确返回值类型 --- pom.xml | 6 + .../com/youlai/boot/config/MybatisConfig.java | 17 +++ .../youlai/boot/system/mapper/LogMapper.java | 3 +- .../youlai/boot/system/mapper/RoleMapper.java | 2 +- .../mapper/ai/AiCommandRecordMapper.xml | 2 +- .../mapper/codegen/DatabaseMapper.xml | 84 ++++++++++- .../resources/mapper/system/LogMapper.xml | 136 +++++++++++++++--- .../resources/mapper/system/UserMapper.xml | 107 +++++++++++++- 8 files changed, 321 insertions(+), 36 deletions(-) diff --git a/pom.xml b/pom.xml index 12fb26ce..3a51ac4b 100644 --- a/pom.xml +++ b/pom.xml @@ -274,6 +274,12 @@ 1.0.0-M6 + + com.dameng + DmJdbcDriver8 + 8.1.4.181 + + diff --git a/src/main/java/com/youlai/boot/config/MybatisConfig.java b/src/main/java/com/youlai/boot/config/MybatisConfig.java index 7cc08b39..537cb7e5 100644 --- a/src/main/java/com/youlai/boot/config/MybatisConfig.java +++ b/src/main/java/com/youlai/boot/config/MybatisConfig.java @@ -7,11 +7,15 @@ import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionIntercepto import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.youlai.boot.plugin.mybatis.MyDataPermissionHandler; import com.youlai.boot.plugin.mybatis.MyMetaObjectHandler; +import org.apache.ibatis.mapping.DatabaseIdProvider; +import org.apache.ibatis.mapping.VendorDatabaseIdProvider; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; +import java.util.Properties; + /** * mybatis-plus 配置类 * @@ -57,4 +61,17 @@ public class MybatisConfig { return globalConfig; } + /** + * 数据库类型自动识别 + */ + @Bean + public DatabaseIdProvider databaseIdProvider() { + DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider(); + Properties properties = new Properties(); + properties.setProperty("DM", "dm"); + properties.setProperty("MySQL", "mysql"); + databaseIdProvider.setProperties(properties); + return databaseIdProvider; + } + } diff --git a/src/main/java/com/youlai/boot/system/mapper/LogMapper.java b/src/main/java/com/youlai/boot/system/mapper/LogMapper.java index 50607b8a..a52ae257 100644 --- a/src/main/java/com/youlai/boot/system/mapper/LogMapper.java +++ b/src/main/java/com/youlai/boot/system/mapper/LogMapper.java @@ -1,13 +1,12 @@ package com.youlai.boot.system.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.youlai.boot.system.model.bo.VisitCount; import com.youlai.boot.system.model.bo.VisitStatsBO; import com.youlai.boot.system.model.entity.Log; import com.youlai.boot.system.model.query.LogPageQuery; import com.youlai.boot.system.model.vo.LogPageVO; -import com.youlai.boot.system.model.vo.VisitStatsVO; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import java.util.List; diff --git a/src/main/java/com/youlai/boot/system/mapper/RoleMapper.java b/src/main/java/com/youlai/boot/system/mapper/RoleMapper.java index 69a2cff4..7db98cfd 100644 --- a/src/main/java/com/youlai/boot/system/mapper/RoleMapper.java +++ b/src/main/java/com/youlai/boot/system/mapper/RoleMapper.java @@ -19,7 +19,7 @@ public interface RoleMapper extends BaseMapper { * 获取最大范围的数据权限 * * @param roles 角色编码集合 - * @return + * @return {@link Integer} – 数据权限范围 */ Integer getMaximumDataScope(Set roles); } diff --git a/src/main/resources/mapper/ai/AiCommandRecordMapper.xml b/src/main/resources/mapper/ai/AiCommandRecordMapper.xml index 0a065278..d23d1c26 100644 --- a/src/main/resources/mapper/ai/AiCommandRecordMapper.xml +++ b/src/main/resources/mapper/ai/AiCommandRecordMapper.xml @@ -45,7 +45,7 @@ acr.username, acr.original_command, acr.provider, - acr.model, + acr.`model`, acr.parse_success, acr.function_calls, acr.explanation, diff --git a/src/main/resources/mapper/codegen/DatabaseMapper.xml b/src/main/resources/mapper/codegen/DatabaseMapper.xml index d923000c..c2aefee0 100644 --- a/src/main/resources/mapper/codegen/DatabaseMapper.xml +++ b/src/main/resources/mapper/codegen/DatabaseMapper.xml @@ -2,10 +2,11 @@ + - - SELECT t1.TABLE_NAME , t1.TABLE_COMMENT , @@ -32,8 +33,38 @@ ORDER BY CREATE_TIME DESC + + - SELECT TABLE_NAME , TABLE_COMMENT , @@ -46,8 +77,25 @@ TABLE_SCHEMA = (SELECT DATABASE()) AND TABLE_NAME = #{tableName} + + - SELECT COLUMN_NAME, DATA_TYPE, @@ -64,6 +112,32 @@ AND TABLE_NAME = #{tableName} ORDER BY ORDINAL_POSITION ASC - + + diff --git a/src/main/resources/mapper/system/LogMapper.xml b/src/main/resources/mapper/system/LogMapper.xml index 29d8c504..ad3a205b 100644 --- a/src/main/resources/mapper/system/LogMapper.xml +++ b/src/main/resources/mapper/system/LogMapper.xml @@ -2,10 +2,11 @@ + - - SELECT t1.id, t1.module, @@ -46,6 +47,48 @@ ORDER BY t1.create_time DESC + + - - SELECT COUNT(CASE WHEN DATE(create_time) = CURDATE() THEN 1 END) AS todayCount, COUNT(*) AS totalCount, + ROUND( + CASE + WHEN COUNT(CASE WHEN DATE(create_time) = CURDATE() - INTERVAL 1 DAY AND TIME(create_time) <= TIME(NOW()) THEN 1 END) = 0 THEN 0 + ELSE + (COUNT(CASE WHEN DATE(create_time) = CURDATE() THEN 1 END) - + COUNT(CASE WHEN DATE(create_time) = CURDATE() - INTERVAL 1 DAY AND TIME(create_time) <= TIME(NOW()) THEN 1 END)) / + COUNT(CASE WHEN DATE(create_time) = CURDATE() - INTERVAL 1 DAY AND TIME(create_time) <= TIME(NOW()) THEN 1 END) + END, + 2) AS growthRate + FROM + sys_log + WHERE + is_deleted = 0 + + + - - + SELECT + COUNT(DISTINCT CASE WHEN DATE(create_time) = CURDATE() THEN ip END) AS todayCount, + COUNT(DISTINCT ip) AS totalCount, + ROUND( + CASE + WHEN COUNT(DISTINCT CASE WHEN DATE(create_time) = CURDATE() - INTERVAL 1 DAY AND TIME(create_time) <= TIME(NOW()) THEN ip END) = 0 THEN 0 ELSE (COUNT(DISTINCT CASE WHEN DATE(create_time) = CURDATE() THEN ip END) - - COUNT(DISTINCT CASE WHEN DATE(create_time) = CURDATE() - INTERVAL 1 DAY AND TIME(create_time) <= TIME(NOW()) THEN ip END)) / + COUNT(DISTINCT CASE WHEN DATE(create_time) = CURDATE() - INTERVAL 1 DAY AND TIME(create_time) <= TIME(NOW()) THEN ip END)) / COUNT(DISTINCT CASE WHEN DATE(create_time) = CURDATE() - INTERVAL 1 DAY AND TIME(create_time) <= TIME(NOW()) THEN ip END) END, 2) AS growthRate - FROM - sys_log - WHERE - is_deleted = 0 + FROM + sys_log + WHERE + is_deleted = 0 + + + diff --git a/src/main/resources/mapper/system/UserMapper.xml b/src/main/resources/mapper/system/UserMapper.xml index 4e281a17..7ea2f9f7 100644 --- a/src/main/resources/mapper/system/UserMapper.xml +++ b/src/main/resources/mapper/system/UserMapper.xml @@ -2,10 +2,11 @@ + - - SELECT u.id, u.username, @@ -80,6 +81,82 @@ + + @@ -224,8 +301,8 @@ GROUP BY u.id - - SELECT u.id, u.username, @@ -246,5 +323,27 @@ WHERE u.id = #{userId} AND u.is_deleted = 0 + +