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 配置分页插件。

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

相关推荐
编程毕设24 分钟前
【含文档+PPT+源码】基于微信小程序的驾考在线学习与测试系统的设计与实现
java·学习·eclipse·tomcat
路在脚下@2 小时前
使用RabbitMQ实现流量削峰填谷
spring boot·rabbitmq
努力小贼3 小时前
SpringBoot——Maven篇
java·spring boot·maven
沙漏无语4 小时前
Spring Boot集成Spring Statemachine
spring boot·后端·spring
小杨4045 小时前
springboot框架项目实践应用七(validation分组、嵌套校验)
spring boot·后端·架构
bing_1586 小时前
Spring Boot 项目中application.yml 和 bootstrap.yml 文件的区别
spring boot·bootstrap
李长渊哦6 小时前
引入其他 YML 配置源 —— Spring Boot 中的 `import` 功能
数据库·spring boot·后端
高建伟-joe6 小时前
Spring Boot Tomcat 漏洞修复
java·spring boot·后端·网络安全·tomcat
小钊(求职中)6 小时前
RabbitMQ从入门到实战-知识详情总结
java·服务器·spring boot·分布式·spring·面试·rabbitmq