Spring Boot + MyBatis-Plus 項目目錄結構

以下是一個標準的 Spring Boot + MyBatis-Plus 項目目錄結構及文件命名規范,包含每個目錄和文件的作用說明,適用于中大型項目開發:


項目根目錄結構

src/
├── main/
│   ├── java/                # Java 源代碼
│   │   └── com/example/     # 項目包根目錄(根據公司域名定義)
│   │       ├── common/      # 通用模塊(全局常量、工具類等)
│   │       ├── config/      # 配置類(數據源、MyBatis-Plus 插件等)
│   │       ├── controller/  # 控制器層(REST API)
│   │       ├── entity/      # 實體類(對應數據庫表)
│   │       ├── mapper/      # Mapper 接口(繼承 BaseMapper)
│   │       ├── service/     # 服務層接口
│   │       ├── service/impl/# 服務層實現類
│   │       ├── dto/         # 數據傳輸對象(Data Transfer Object)
│   │       ├── vo/          # 視圖對象(View Object)
│   │       ├── enums/       # 枚舉類
│   │       ├── filter/      # 過濾器(如登錄攔截器)
│   │       ├── aspect/      # AOP 切面(日志、事務等)
│   │       └── exception/   # 自定義異常類及全局異常處理
│   │
│   └── resources/           # 資源文件
│       ├── static/          # 靜態資源(HTML/CSS/JS)
│       ├── templates/       # 模板文件(如 Thymeleaf)
│       ├── mapper/          # XML 映射文件(可選)
│       ├── application.yml  # 主配置文件
│       └── logback-spring.xml # 日志配置
│
└── test/                    # 測試代碼└── java/└── com/example/├── mapper/      # Mapper 測試└── service/     # Service 測試

關鍵目錄及文件詳解

1. src/main/java/com/example
目錄名作用文件命名規范
config存放 Spring Boot 配置類XxxConfig.java(如 MyBatisPlusConfig.java
controller處理 HTTP 請求,調用 Service 層XxxController.java(如 UserController.java
entity數據庫表對應的實體類,使用 MyBatis-Plus 注解(如 @TableNameXxx.java(如 User.java
mapperMyBatis-Plus 的 Mapper 接口,繼承 BaseMapper<T>XxxMapper.java(如 UserMapper.java
service服務層接口(定義業務邏輯)XxxService.java(如 UserService.java
service/impl服務層實現類XxxServiceImpl.java(如 UserServiceImpl.java
dto數據傳輸對象(用于接口參數或返回結果)XxxDTO.java(如 UserDTO.java
vo視圖對象(用于前端展示的定制化數據)XxxVO.java(如 UserVO.java
enums枚舉類(狀態碼、類型等)XxxEnum.java(如 ResultCodeEnum.java
exception自定義異常類及全局異常處理器XxxException.java(如 BusinessException.java

2. src/main/resources
目錄/文件名作用文件命名規范
application.yml主配置文件(數據源、MyBatis-Plus 配置等)
mapper/*.xmlMyBatis XML 映射文件(非必須,復雜 SQL 時使用)XxxMapper.xml(如 UserMapper.xml
static/靜態資源(HTML/CSS/JS/圖片)
templates/模板文件(如 Thymeleaf、Freemarker)
logback-spring.xml日志配置文件

配置文件示例

application.yml
spring:datasource:url: jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTCusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivermybatis-plus:configuration:map-underscore-to-camel-case: true # 開啟駝峰命名映射global-config:db-config:id-type: auto # 主鍵自增mapper-locations: classpath:mapper/*.xml # XML 映射文件路徑(可選)

代碼示例

實體類 User.java
@Data
@TableName("user") // 對應數據庫表名
public class User {@TableId(type = IdType.AUTO)private Long id;private String name;private Integer age;@TableField(fill = FieldFill.INSERT) // 自動填充創建時間private LocalDateTime createTime;
}
Mapper 接口 UserMapper.java
public interface UserMapper extends BaseMapper<User> {// 自定義方法(可選)@Select("SELECT * FROM user WHERE age > #{age}")List<User> selectByAgeGreaterThan(Integer age);
}
Service 實現類 UserServiceImpl.java
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {@Overridepublic List<User> getUsersByAge(Integer age) {QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.gt("age", age);return baseMapper.selectList(wrapper);}
}

命名規范總結

  1. 包名:全小寫,層級清晰(如 com.example.project.module)。
  2. 類名:大駝峰(如 UserController)。
  3. 接口與實現類
    • 接口:XxxService.java
    • 實現類:XxxServiceImpl.java
  4. Mapper 接口XxxMapper.java
  5. 實體類Xxx.java
  6. DTO/VOXxxDTO.javaXxxVO.java
  7. 測試類XxxTest.java(如 UserServiceTest.java

注意事項

  1. 避免過度使用 XML:MyBatis-Plus 的 BaseMapperQueryWrapper 已覆蓋 90% 的 SQL 場景。
  2. 統一異常處理:在 exception 包下定義全局異常處理器 GlobalExceptionHandler.java
  3. 分頁插件配置:在 config 包下添加 MyBatisPlusConfig.java 配置分頁插件。

通過以上結構,項目將具備良好的可維護性和擴展性。

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

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

相關文章

Webpack優化前端性能

Webpack優化前端性能☆☆ 涵蓋了代碼分割、懶加載、壓縮、緩存優化、Tree Shaking、圖片優化、CDN使用等多個方面。 Webpack優化前端性能詳解(2025綜合實踐版) Webpack作為現代前端工程化的核心工具,其優化能力直接影響項目的首屏速度、交互流暢度和用戶體驗。以下從代碼維…

ardunio R4 WiFi連接實戰

ardunio WiFi連接模板 ardunio R4 WiFi 開發板有著不錯的性能和板載內存&#xff0c;本機自帶 WiFi 連接模塊&#xff0c;可以完成簡單的網絡服務。對于這個小東西我情有獨鐘&#xff0c;也總希望能夠用它來做些什么&#xff0c;所以先從 WiFi 連接開始學起&#xff0c;未來考…

C++11 編譯使用 aws-cpp-sdk

一、對sdk的編譯前準備 1、軟件需求 此文檔針對于在Linux系統上使用源碼進行編譯開發操作系統使用原生的contos7Linux。機器配置建議 內存8G以上,CPU 4個 以上GCC 4.9.0 及以上版本Cmake 3.12以上 3.21以下apt install libcurl-devel openssl-devel libuuid-devel pulseaudio-…

得物 Android Crash 治理實踐

一、前言 通過修復歷史遺留的Crash漏報問題&#xff08;包括端側SDK采集的兼容性優化及Crash平臺的數據消費機制完善&#xff09;&#xff0c;得物Android端的Crash監控體系得到顯著增強&#xff0c;使得歷史Crash數據的完整捕獲能力得到系統性改善&#xff0c;相應Crash指標也…

SpringBoot3+Lombok如何配置logback輸出日志到文件

Background/Requirement SpringBoot3Lombok如何配置logback輸出日志到文件&#xff0c;因為我需要對這些日志進行輸出&#xff0c;控制臺輸出和文件輸出&#xff0c;文件輸出是為了更好的作為AuditLog且支持滾動式備份&#xff0c;每天一個文件。 Technical Solution 1.確保你…

主流向量數據庫對比

在 AI 的 RAG&#xff08;檢索增強生成&#xff09;研發領域&#xff0c;向量數據庫是存儲和查詢向量嵌入的核心工具&#xff0c;用于支持高效的語義搜索和信息檢索。向量嵌入是文本或其他非結構化數據的數值表示&#xff0c;RAG 系統通過這些嵌入從知識庫中檢索相關信息&#…

搞定python之四----函數、lambda和模塊

本文是《搞定python》系列專欄的第四篇&#xff0c;通過代碼演示列python自定義函數、lambda和模塊的用法。本文學習完成后&#xff0c;python的基礎知識就完了。后面會學習面向對象的內容。 1、自定義函數 # 測試python自定義函數# 有參數&#xff0c;沒有返回值 def say_he…

[操作系統] 學校課程關于“靜態優先級搶占式調度“作業

今天我們來分享兩道題目哈, 學校弄得題目. T1: 靜態優先級, 搶占式(1為高優先級) 圖解: 以下是靜態優先級搶占式調度的解題過程和結果&#xff1a; 解題思路&#xff1a; 優先級規則&#xff1a; 數值越小優先級越高。新進程到達時&#xff0c;若其優先級高于當前運行進程&…

洛谷P1320 壓縮技術(續集版)

P1320 壓縮技術&#xff08;續集版&#xff09; 題目描述 設某漢字由 N N N \times N NN 的 0 \texttt 0 0 和 1 \texttt 1 1 的點陣圖案組成。 我們依照以下規則生成壓縮碼。連續一組數值&#xff1a;從漢字點陣圖案的第一行第一個符號開始計算&#xff0c;按書寫順序從…

使用DeepSeek完成一個簡單嵌入式開發

開啟DeepSeek對話 請幫我使用Altium Designer設計原理圖、PCB&#xff0c;使用keil完成代碼編寫&#xff1b;要求&#xff1a;使用stm32F103RCT6為主控芯片&#xff0c;控制3個流水燈的原理圖 這里需要注意&#xff0c;每次DeepSeek的回答都不太一樣。 DeepSeek回答 以下是使…

volatile、synchronized和Lock

名詞解釋&#xff1a; 指令重排是計算機為了優化執行效率&#xff0c;在不改變單線程程序結果的前提下&#xff0c;對代碼的執行順序進行重新排列的操作。它可能發生在編譯階段&#xff08;編譯器優化&#xff09;或CPU運行階段&#xff08;處理器優化&#xff09;。 舉個栗子…

嵌入式八股C語言---面向對象篇

面向對象與面向過程 面向過程 就是把整個業務邏輯分成多個步驟,每步或每一個功能都可以使用一個函數來實現面向對象 對象是類的實例化,此時一個類就內部有屬性和相應的方法 封裝 在C語言里實現封裝就是實現一個結構體,里面包括的成員變量和函數指針,然后在構造函數中,為結構體…

Distilling the Knowledge in a Neural Network知識蒸餾

一.知識蒸餾的定義 1. 量化VS蒸餾 量化&#xff1a;減小精度 例如參數float32—>float16蒸餾&#xff1a;Student model模仿Teacher model,在保持較高性能的同時&#xff0c;減少模型大小和計算復雜度的技術。 二.知識蒸餾步驟 1.教師模型訓練: 訓練一個大型且復雜的神…

靜態程序分析

參考&#xff1a;https://github.com/RangerNJU/Static-Program-Analysis-Book/blob/master/SUMMARY.md 課件&#xff1a;https://pascal-group.bitbucket.io/teaching.html 視頻&#xff1a;南京大學《軟件分析》課程01&#xff08;Introduction&#xff09;_嗶哩嗶哩_bilib…

Flutter_學習記錄_device_info_plus 插件獲取設備信息

引入三方庫device_info_plus導入頭文件 import package:device_info_plus/device_info_plus.dart;獲取設備信息的主要代碼 DeviceInfoPlugin deviceInfoPlugin DeviceInfoPlugin(); BaseDeviceInfo deviceInfo await deviceInfoPlugin.deviceInfo;完整案例 import package…

日有所得-google 瀏覽器離線安裝

一、目標&#xff1a; 基于UOS系統進行瀏覽器插件開發&#xff0c;目標展現形式為側欄 二、背景&#xff1a; UOS操作系統需支持1032及以上版本 瀏覽器插件基于google瀏覽器&#xff0c;自帶360等瀏覽器能兼容基于google瀏覽器開發的插件 JS庫借用Vue庫以提高效率 三、問…

高效自動化測試:打造Python+Requests+Pytest+Allure+YAML的接口測試框架

一、背景 在快節奏的開發周期中&#xff0c;如何確保接口質量&#xff1f;自動化測試是關鍵。通過構建標準化、可復用的測試框架&#xff0c;能顯著提升測試效率與準確性&#xff0c;為項目質量保駕護航[1][7]。 二、目標 ? 核心目標&#xff1a; ● 實現快速、高效的接口測試…

談談List,Set,Map的區別

List、Set 和 Map 是 Java 集合框架&#xff08;Java Collections Framework&#xff09;中的三種主要接口&#xff0c;它們各自有不同的特點和用途。以下是它們的區別和使用場景的詳細解釋&#xff1a; 1. List&#xff08;列表&#xff09; 1.1 特點 有序集合&#xff1a;Li…

智能運維管理系統的主要優勢

智能運維管理系統通過整合大數據、人工智能、機器學習等技術&#xff0c;顯著提升了IT運維的效率和質量。以下是智能運維管理系統的主要優勢&#xff1a; 一、提升運維效率 1.自動化運維 自動執行重復性任務&#xff08;如日志分析、故障排查、系統備份&#xff09;&#xf…

分享一個用來解決運維問題的 AI 提示詞

模板如下&#xff08;每次我都是自己寫的&#xff0c;但是感覺可以更加調優一些&#xff09; 我遇到了如下問題<問題的清晰描述>你是一位資深運維工程師&#xff0c;任務是指導我一步步排查并解決上面的問題排查過程中&#xff0c;你給我操作指示&#xff0c;我將操作的…