以下是一個標準的 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 注解(如 @TableName ) | Xxx.java (如 User.java ) |
mapper | MyBatis-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/*.xml | MyBatis 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);}
}
命名規范總結
- 包名:全小寫,層級清晰(如
com.example.project.module
)。 - 類名:大駝峰(如
UserController
)。 - 接口與實現類:
- 接口:
XxxService.java
- 實現類:
XxxServiceImpl.java
- 接口:
- Mapper 接口:
XxxMapper.java
- 實體類:
Xxx.java
- DTO/VO:
XxxDTO.java
、XxxVO.java
- 測試類:
XxxTest.java
(如UserServiceTest.java
)
注意事項
- 避免過度使用 XML:MyBatis-Plus 的
BaseMapper
和QueryWrapper
已覆蓋 90% 的 SQL 場景。 - 統一異常處理:在
exception
包下定義全局異常處理器GlobalExceptionHandler.java
。 - 分頁插件配置:在
config
包下添加MyBatisPlusConfig.java
配置分頁插件。
通過以上結構,項目將具備良好的可維護性和擴展性。