目录

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

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

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