SpringBoot優點達項目實戰:獲取系統配置接口(三)

SpringBoot優點達項目實戰:獲取系統配置接口(二)


文章目錄

      • SpringBoot優點達項目實戰:獲取系統配置接口(二)
        • 1、查看接口
        • 2、查看數據庫
        • 3、代碼實現
          • 1、創建實體類SysConfig
          • 2、創建返回數據的vo
          • 3、創建controller類
          • 4、實現Service層
          • 5、實現mapper層
        • 4、測試結果

1、查看接口

GET /index/getConfig

請求參數

返回結果

狀態碼狀態碼含義說明數據模型
200OK成功Inline

返回數據結構

狀態碼 200

名稱類型必選約束說明
? errnointegertruenonenone
? errmsgstringtruenonenone
? dataobjecttruenonenone
?? login_titlestringtruenone登錄頁標題
?? login_bgstringtruenone登錄頁背景
?? system_namestringtruenone系統名稱
?? system_logostringtruenone系統logo
?? web_icostringtruenonefavicon
2、查看數據庫

image-20240626171542672

從數據庫中,可以看出,請求項為管理系統配置

idgroup_valuetab_valueattr_keyattr_nameattr_valuedel_flagtypeconfig_valuevalidatorplaceholder
77systemloginlogin_title登錄頁標題優化登錄系統09
78systemloginlogin_bg登錄頁背景static/admin/image/loginbg.png09
80systembasesystem_name系統名稱優化管理系統09
81systembasesystem_logo系統logostatic/admin/image/logo.png09
82systembaseweb_icofaviconstatic/admin/image/favicon.ico09
3、代碼實現
1、創建實體類SysConfig
@Data
public class SystemConfig {@Schema(description = "主鍵")@TableId(value = "id",type = IdType.AUTO)private Long id;@Schema(description = "配置名稱")@TableField(value = "group_value")private String groupValue;@Schema(description = "組件名稱")@TableField(value = "tab_value")private String tabValue;@Schema(description = "配置鍵")@TableField(value = "attr_key")private String attrKey;@Schema(description = "配置名稱")@TableField(value = "attr_name")private String attrName;@Schema(description = "配置值")@TableField(value = "attr_value")private String attrValue;@TableLogic@Schema(description = "邏輯刪除")@TableField(value = "del_flag")@JsonIgnoreprivate Integer delFlag;@Schema(description = "類型")@TableField(value = "type")private Integer type;@Schema(description = "系統值")@TableField(value = "config_value")private String configValue;@Schema(description = "驗證規則")@TableField(value = "validator")private String validator;@Schema(description = "提示文字")@TableField(value = "placeholder")private String placeholder;@Schema(description = "是否能刪除")@TableField(value = "can_delete")private Integer canDelete;@Schema(description = "排序")@TableField(value = "sort_num")private Integer sortNum;}
2、創建返回數據的vo

因為前端請求并不需要那么多的數據,所以我們可以在web-admin的包下創建

image-20240626172452307

@Data
@Schema(description = "系統配置實體")
public class SystemConfigVo {@Schema(description = "登錄頁標題")private String loginTitle;@Schema(description = "登錄頁背景")private String loginBg;@Schema(description = "系統名稱")private String systemName;@Schema(description = "系統logo")private String systemLogo;@Schema(description = "favicon")private String webIco;
}
3、創建controller類
@Tag(name = "基礎配置")
@RestController()
@RequestMapping("/index")
@Slf4j
public class BaseSystemConfigController {@Autowiredprivate SystemConfigService systemConfigService;@GetMapping("/getConfig")@Operation(summary = "獲取系統配置")public Result<SystemConfigVo> getConfig(){SystemConfigVo systemConfigVo = systemConfigService.getConfig();return Result.ok(systemConfigVo);}
}

包含的注解和類

  • @Tag(name = “基礎配置”):這是 OpenAPI(Swagger)的注解,用于給 API 分組,方便生成 API 文檔時進行分類。這里的分組名稱是 “基礎配置”。
  • @RestController:這是 Spring 的注解,表示這個類是一個控制器,并且它的每個方法的返回值會自動轉換為 JSON 格式并寫入 HTTP 響應中。
  • @RequestMapping(“/index”):這是 Spring 的注解,用于定義請求的基本路徑。這里定義了這個控制器的所有請求路徑前綴為 /index
  • @Slf4j:這是 Lombok 的注解,用于自動生成一個名為 log 的 Logger 對象,方便在類中進行日志記錄。
  • @Autowired:這是 Spring 的注解,用于自動注入依賴。這里注入了 SystemConfigService 服務類。
  • @GetMapping(“/getConfig”):這是 Spring 的注解,用于將 HTTP GET 請求映射到 getConfig 方法。請求路徑是 /index/getConfig
  • @Operation(summary = “獲取系統配置”):這是 OpenAPI(Swagger)的注解,用于給 API 方法添加描述,方便生成 API 文檔時顯示。這里的描述是 “獲取系統配置”。
4、實現Service層

創建service接口

/*** 針對表sys_config的數據操作service*/
public interface SystemConfigService extends IService<SystemConfig> {/*** 獲取系統配置信息* @return*/SystemConfigVo getConfig();/*** 用戶等登錄* @param systemUser* @return*/String login(SystemUser systemUser);
}
  • extends IService:IService 是 MyBatis-Plus 提供的一個通用服務接口,SystemConfigService 通過繼承它獲取了許多通用的 CRUD 操作方法。SystemConfig 是實體類,表示 sys_config 表。

實現類

@Service
@Slf4j
public class SystemConfigServiceImpl extends ServiceImpl<SystemConfigMapper, SystemConfig>
implements SystemConfigService {@Autowiredprivate SystemConfigMapper systemConfigMapper;/*** 獲取系統配置信息** @return*/@Overridepublic SystemConfigVo getConfig() {List<SystemConfig> systemConfigList = systemConfigMapper.getTabByVale(SystemConfigConstant.SYSTEM_CONFIG_SYSTEM);SystemConfigVo systemConfigVo = new SystemConfigVo();// 定義一個映射,將常量值映射到相應的設置方法Map<String, BiConsumer<SystemConfigVo, String>> configMap = new HashMap<>();configMap.put(SystemConfigConstant.SYSTEM_CONFIG_TAB_LOGIN_TITLE, SystemConfigVo::setLoginTitle);configMap.put(SystemConfigConstant.SYSTEM_CONFIG_TAB_LOGIN_BG, SystemConfigVo::setLoginBg);configMap.put(SystemConfigConstant.SYSTEM_CONFIG_TAB_SYSTEM_NAME, SystemConfigVo::setSystemName);configMap.put(SystemConfigConstant.SYSTEM_CONFIG_TAB_SYSTEM_LOGO, SystemConfigVo::setSystemLogo);configMap.put(SystemConfigConstant.SYSTEM_CONFIG_TAB_WEB_ICO, SystemConfigVo::setWebIco);for (SystemConfig config : systemConfigList) {BiConsumer<SystemConfigVo, String> setter = configMap.get(config.getAttrKey());if (setter != null) {setter.accept(systemConfigVo, config.getAttrValue());}}return systemConfigVo;}
}

類注解

  • @Service:標記該類是一個服務類,Spring 會自動將其注冊為 Spring Bean。
  • @Slf4j:由 Lombok 提供,自動生成一個 log 對象用于日志記錄。

類聲明

  • SystemConfigServiceImpl 類繼承了 ServiceImpl<SystemConfigMapper, SystemConfig>,并實現了 SystemConfigService 接口。

依賴注入

  • @Autowired:注入 SystemConfigMapper,用于與數據庫交互

getConfig 方法

  • 從數據庫中獲取系統配置列表。
  • 創建 SystemConfigVo 對象,用于存儲系統配置。
  • 定義一個映射,將配置項的鍵映射到 SystemConfigVo 對象的相應設置方法。
  • 遍歷配置列表,根據鍵值對調用相應的設置方法,將配置值注入 SystemConfigVo 對象。
  • 返回填充了系統配置信息的 SystemConfigVo 對象。

主要邏輯

  • 獲取系統配置列表:調用 systemConfigMapper.getTabByVale(SystemConfigConstant.SYSTEM_CONFIG_SYSTEM) 獲取系統配置列表。
  • 映射配置項:使用 Map<String, BiConsumer<SystemConfigVo, String>> 將配置項的鍵映射到 SystemConfigVo 的設置方法。
  • 設置配置值:遍歷配置列表,根據鍵值對調用相應的設置方法,將配置值注入 SystemConfigVo 對象。
  • 返回配置對象:返回包含所有系統配置信息的 SystemConfigVo 對象。
5、實現mapper層
@Mapper
public interface SystemConfigMapper extends BaseMapper<SystemConfig> {@Select("select * from sys_config where tab_value = #{systemConfigSystem}")List<SystemConfig> getTabByVale(String systemConfigSystem);
}
  • @Mapper : MyBatis 這是一個 Mapper 接口,Spring 會自動將其注冊為一個 MyBatis Mapper。
  • extends BaseMapper: 使得 SystemConfigMapper 繼承了 MyBatis-Plus 提供的通用 Mapper 接口,可以直接使用通用的 CRUD 方法。
  • @Select注解:定義了一個自定義的 SQL 查詢語句,用于從 sys_config 表中根據 tab_value 查詢記錄。
  • getTabByVale 方法根據傳入的 systemConfigSystem 參數查詢 sys_config 表中的記錄,并返回一個 SystemConfig 對象的列表。
4、測試結果

訪問knife4j,進行接口測試

image-20240626174204198

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/35782.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35782.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/35782.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【INTEL(ALTERA)】Eclipse Nios II SBT 無法從模板創建新應用程序和 BSP

目錄 說明 解決方法 說明 您應該能夠創建新的應用程序和 BSP 模板包含以下步驟&#xff1a; 選擇 Nios II應用程序和 BSP 來自模板。選擇您的.sopcinfo 文件并選擇模板。從您的工作區單擊 選擇現有的 BSP 項目。單擊 創建。選擇所需的 BSP 選項。單擊 完成。 但是&#xf…

API 安全策略和基礎指南

API 是當今數字創新計劃的核心&#xff0c;已成為應用程序的頭號攻擊載體。了解什么是 API 安全、為什么它如此重要&#xff0c;以及如何保護您的 API 免受現代威脅至關重要。 什么是 API 安全&#xff1f; 應用程序編程接口&#xff08;API&#xff09;是現代應用程序的基石…

PostgreSQL教程:開啟您的數據庫之旅

PostgreSQL教程&#xff1a;開啟您的數據庫之旅 PostgreSQL是一種開源的對象關系型數據庫管理系統&#xff08;ORDBMS&#xff09;&#xff0c;它以其強大的功能、穩定性和高度的可擴展性而聞名。作為一個功能豐富的數據庫系統&#xff0c;PostgreSQL支持復雜的查詢、強大的事…

Python 面試題解析

Python 面試題解析 Python 作為一種廣泛使用的編程語言&#xff0c;其面試題目通常覆蓋了語言基礎、數據結構、算法、設計模式、Web 開發、測試、數據庫、系統設計等多個方面。以下是一些常見的 Python 面試題及其解析&#xff0c;使用 Markdown 格式編寫。 1. Python 基礎 …

Linux-筆記 OverlayFS文件系統小應用

前言 通過另一章節 OverlayFS文件系統入門 中已經大致了解了原理&#xff0c;這里來實現一個小應用。

大模型性能優化KV Cache

原理 KV Cache的本質就是避免重復計算&#xff0c;把需要重復計算的結果進行緩存&#xff0c;生成式模型的新的token的產生需要用到之前的所有token的 K , V K,V K,V&#xff0c;在計算注意力的時候是當前的 Q Q Q和所有的 K , V K,V K,V來進行計算&#xff0c;所以是緩存 K ,…

打破數據分析壁壘:SPSS復習必備(九)

有序定性資料統計推斷 1.分類 單向有序行列表 雙向有序屬性相同行列表 雙向有序屬性不同行列表 2.單向有序行列表 秩和檢驗 ① 兩組單向有序分類資料 ②多組單向有序定性資料 步驟&#xff1a; 1.建立檢驗假設和確定檢驗水準 2.編秩 3.求秩和 4.確定檢驗統計量 5…

按位與、或、異或操作符

目錄 & --- 按位與操作符 按位與操作符運用規則 按位與操作符相關代碼 按位與操作符相關代碼驗證 | --- 按位或操作符 按位或操作符運用規則 按位或操作符相關代碼 按位或操作符相關代碼驗證 ^ --- 按位異或操作符 按位異或操作符運用規則 按位異或操作符相關代…

分頁組件 vue/uniapp

失效如上圖 1.父組件調用 <onion-pagination :page.sync="todusGameQuery.pageSize" @update:page="changeTodusLoadMore":pageSize="todusGameQuery.pageNum" :total="todusGameTotal"></onion-pagination> 2.組件封裝…

海納斯 hinas 的hi3798mv100 華為悅盒 6108v9 安裝wifi模塊

hi3798mv100安裝wifi模塊 1.執行腳本 &#xff0c;執行完畢后重啟服務器2. 繼續執行腳本3.檢查網卡驅動安裝是否正確4.查看網卡安裝狀態5.連接wifi結尾 1.執行腳本 &#xff0c;執行完畢后重啟服務器 bash <(curl -sSL https://gitee.com/xjxjin/scripts/raw/main/install_…

【開源項目】自然語言處理領域的明星項目推薦:Hugging Face Transformers

在當今人工智能與大數據飛速發展的時代&#xff0c;自然語言處理&#xff08;NLP&#xff09;已成為推動科技進步的重要力量。而在NLP領域&#xff0c;Hugging Face Transformers無疑是一個備受矚目的開源項目。本文將從項目介紹、代碼解釋以及技術特點等角度&#xff0c;為您深…

Leetcode Hot100之矩陣

1. 矩陣置零 題目描述 給定一個 m x n 的矩陣&#xff0c;如果一個元素為 0 &#xff0c;則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。 解題思路 題目要求進行原地更改&#xff0c;也就是不能使用額外的空間&#xff0c;因此我們可以使用第一行的元素來記錄對應的…

Java SpringBoot 打包后 獲取文件 打包后找不到文件 解決方法

在SpringBoot下 本地運行獲取項目下的文件是沒問題的&#xff0c;在打包后獲取則找不到文件 原因&#xff1a; 在Spring Boot項目中&#xff0c;當嘗試訪問項目下的文件時&#xff0c;本地開發環境和打包后的運行環境可能會有所不同。在本地開發時&#xff0c;通常可以直接通過…

Python自動造波器橢圓曲線波孤子解

&#x1f3af;要點 &#x1f3af;快速傅立葉變換算法周期域解橢圓曲線波 | &#x1f3af;算法數值解孤波脈沖和結果動畫 | &#x1f3af;三種語言孤子解淺水表面波方程 | &#x1f3af;漸近分解算法孤子波 | &#x1f3af;自適應步長算法孤子波 | &#x1f3af;流體自動造波器…

基于STM32的智能家庭安防系統

目錄 引言環境準備智能家庭安防系統基礎代碼實現&#xff1a;實現智能家庭安防系統 4.1 數據采集模塊4.2 數據處理與分析4.3 控制系統實現4.4 用戶界面與數據可視化應用場景&#xff1a;家庭安防管理與優化問題解決方案與優化收尾與總結 1. 引言 智能家庭安防系統通過使用ST…

終端基本指令使用不了

當你修改了~/.zshrc文件后發現像ls、vim這樣的基本命令無法使用&#xff0c;這通常意味著你的PATH環境變量可能被錯誤地修改或覆蓋了&#xff0c;導致shell無法找到這些命令的可執行文件。以下是幾個可能的原因和解決方法&#xff1a; PATH變量被錯誤修改&#xff1a; 確認你沒…

利用flex來布局頂部菜單欄

安裝vscode插件 css peek&#xff1a;快速定位到css定義的位置 微軟的live preview 替換live server 因為這個好像不支持utf8 前置css知識 span標簽是一個行內容器&#xff0c;用于標記文本的一部分&#xff0c;或文檔的一部分。它與 div 非常相似&#xff0c;但 div 是塊級…

數據結構——帶頭雙向循環鏈表(c語言實現)

目錄 1.單鏈表和雙向鏈表對比 2.雙向鏈表實現 2.1 創建新節點 2.2 鏈表初始化 2.3 尾插 2.4 頭插 2.5 尾刪 2.6 頭刪 2.7 查找 2.8 指定位置后插入數據 2.9 刪除指定節點 2.10 銷毀鏈表 2.11 打印鏈表 前言&#xff1a; 我們在前幾期詳細地講解了不帶頭單…

vue下載本地xls模版靜態文件

需求導入的下載模版不想放在服務器放在前端本地下載靜態資源最簡單的方式直接訪問 public 文件夾下的文件 方法一&#xff1a;使用靜態文件路徑 將文件放在 public 文件夾中&#xff1a; 把你的文件從 src/assets 移動到 public 文件夾。例如&#xff1a;public/template.xls。…

【高考志愿】電氣工程

目錄 一、專業概述 二、專業特點 三、就業前景 四、選擇學校 高考志愿選擇電氣工程是一個極具智慧和遠見的決定&#xff0c;因為電氣工程在當今社會中扮演著至關重要的角色。以下是對電氣工程專業更為詳細的解析&#xff1a; 一、專業概述 電氣工程及其自動化專業&#xf…