Spring Boot + MyBatis-Plus 项目目录结构

以下是一个标准的 Spring Boot + MyBatis-Plus 项目目录结构及文件命名规范,包含每个目录和文件的作用说明,适用于中大型项目开发:


项目根目录结构

lua 复制代码
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
yaml 复制代码
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true # 开启驼峰命名映射
  global-config:
    db-config:
      id-type: auto # 主键自增
  mapper-locations: classpath:mapper/*.xml # XML 映射文件路径(可选)

代码示例

实体类 User.java
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
java 复制代码
public interface UserMapper extends BaseMapper<User> {
    // 自定义方法(可选)
    @Select("SELECT * FROM user WHERE age > #{age}")
    List<User> selectByAgeGreaterThan(Integer age);
}
Service 实现类 UserServiceImpl.java
java 复制代码
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    @Override
    public 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 配置分页插件。

通过以上结构,项目将具备良好的可维护性和扩展性。

相关推荐
XMYX-05 小时前
Spring Boot + Prometheus 实现应用监控(基于 Actuator 和 Micrometer)
spring boot·后端·prometheus
@yanyu6667 小时前
springboot实现查询学生
java·spring boot·后端
酷爱码7 小时前
Spring Boot项目中JSON解析库的深度解析与应用实践
spring boot·后端·json
bing_1588 小时前
跨多个微服务使用 Redis 共享数据时,如何管理数据一致性?
redis·微服务·mybatis
java干货8 小时前
虚拟线程与消息队列:Spring Boot 3.5 中异步架构的演进与选择
spring boot·后端·架构
斯普信专业组10 小时前
Tomcat全方位监控实施方案指南
java·tomcat
武昌库里写JAVA11 小时前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
云之兕11 小时前
MyBatis 的动态 SQL
数据库·sql·mybatis
小白杨树树11 小时前
【WebSocket】SpringBoot项目中使用WebSocket
spring boot·websocket·网络协议