资讯动态

SpringBoot + MyBatis-Plus 标准项目搭建,附完整可运行代码

发布时间:2026/9/11 19:51:38 来源:尧图企业网站定制
一、引言在 Java 后端开发中Spring Boot 已经成为构建微服务和企业级应用的标配框架而 MyBatis-Plus 则是在 MyBatis 基础上进一步封装增强的 ORM 工具。它提供了通用 Mapper、通用 Service、分页插件、代码生成器等能力能够显著减少重复的 CRUD 代码让开发者把精力聚焦在业务逻辑上。本文将从零开始带你搭建一个标准、规范、可直接运行的 Spring Boot MyBatis-Plus 项目。文章会完整覆盖依赖引入、配置、建表、实体类、Mapper、Service、Controller 以及接口验证全过程并给出关键代码示例。二、技术栈与环境准备在开始搭建之前请先确认以下基础环境已经安装完成JDK建议使用 JDK 8 或 JDK 11推荐 17。Maven建议使用 3.6 及以上版本。MySQL建议使用 5.7 或 8.0。IDEA推荐使用 IntelliJ IDEA 2021 及以上版本。正式开始前先确定本次要实现的业务场景用户信息管理。我们通过一个 user 表完成“根据用户 ID 查询、新增、修改、删除用户”的完整 CRUD 流程便于读者在实际项目中进行对照迁移。三、创建项目与引入依赖首先在 IDEA 中新建一个 Maven 项目项目名可以叫 springboot-mybatis-plus-demo。打开 pom.xml加入以下依赖parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.2.5/version relativePath/ /parent dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdcom.baomidou/groupId artifactIdmybatis-plus-spring-boot3-starter/artifactId version3.5.7/version /dependency dependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId scoperuntime/scope /dependency /dependencies这里需要特别注意如果使用的是 Spring Boot 2.xMyBatis-Plus 依赖要换成 mybatis-plus-boot-starter如果使用的是 Spring Boot 3.x则使用 mybatis-plus-spring-boot3-starter版本选择 3.5.7 及以上避免兼容性问题。四、配置数据源和 MyBatis-Plus在 src/main/resources 目录下创建 application.yml配置项目端口、数据源以及 MyBatis-Plus 参数server: port: 8080 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mp_demo?useUnicodetruecharacterEncodingutf-8serverTimezoneAsia/Shanghai username: root password: 123456 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: id-type: auto logic-delete-field: deleted logic-delete-value: 1 logic-not-delete-value: 0上述配置中log-impl 用于控制台打印 SQL便于开发调试logic-delete 相关配置用于支持逻辑删除。如果暂时不需要逻辑删除可以省略这一段。五、建表与初始化数据在 MySQL 中创建数据库 mp_demo然后执行下面的建表 SQLCREATE DATABASE IF NOT EXISTS mp_demo DEFAULT CHARACTER SET utf8mb4; USE mp_demo; CREATE TABLE user ( id BIGINT AUTO_INCREMENT COMMENT 主键ID, name VARCHAR(50) NOT NULL COMMENT 姓名, age INT NOT NULL COMMENT 年龄, email VARCHAR(100) DEFAULT NULL COMMENT 邮箱, deleted TINYINT DEFAULT 0 COMMENT 逻辑删除0未删除1已删除, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT用户表; INSERT INTO user (name, age, email) VALUES (张三, 28, zhangsanexample.com), (李四, 25, lisiexample.com), (王五, 30, wangwuexample.com);六、编写实体类与 Mapper创建 User 实体类对应 user 表Data TableName(user) public class User { TableId(type IdType.AUTO) private Long id; private String name; private Integer age; private String email; TableLogic private Integer deleted; }然后创建 UserMapper 接口继承 BaseMapper即可获得单表 CRUD 能力Mapper public interface UserMapper extends BaseMapperUser { }在启动类上建议添加 MapperScan 注解这样 Mapper 接口就不必逐个写 MapperSpringBootApplication MapperScan(com.example.demo.mapper) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }七、Service 层开发MyBatis-Plus 提供了 IService 和 ServiceImpl。创建 UserService 接口public interface UserService extends IServiceUser { User getUserById(Long id); boolean createUser(User user); boolean updateUserById(User user); boolean removeUserById(Long id); }再创建 UserServiceImpl 实现类Service public class UserServiceImpl extends ServiceImplUserMapper, User implements UserService { Override public User getUserById(Long id) { return getById(id); } Override public boolean createUser(User user) { return save(user); } Override public boolean updateUserById(User user) { return updateById(user); } Override public boolean removeUserById(Long id) { return removeById(id); } }这里没有写复杂的业务逻辑是为了让读者更清楚地看到标准分层结构。真实项目中只需在接口和实现类中继续补充业务代码即可。八、Controller 接口层接下来创建 UserController向外提供 REST 接口RestController RequestMapping(/api/user) public class UserController { Resource private UserService userService; GetMapping(/{id}) public ResultUser getUser(PathVariable Long id) { User user userService.getUserById(id); return Result.success(user); } PostMapping public ResultBoolean createUser(RequestBody User user) { return Result.success(userService.createUser(user)); } PutMapping public ResultBoolean updateUser(RequestBody User user) { return Result.success(userService.updateUserById(user)); } DeleteMapping(/{id}) public ResultBoolean deleteUser(PathVariable Long id) { return Result.success(userService.removeUserById(id)); } }其中的 Result 是一个通用返回结构代码如下Data public class ResultT { private Integer code; private String message; private T data; public static T ResultT success(T data) { ResultT result new Result(); result.code 200; result.message success; result.data data; return result; } }九、分页查询示例分页功能是 MyBatis-Plus 的常见能力也适合作为“完整可运行代码”的重要补充。首先需要配置分页插件Configuration public class MybatisPlusConfig { Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } }然后在 UserController 中增加分页查询接口GetMapping(/page) public ResultPageUser pageUser( RequestParam(defaultValue 1) Integer pageNum, RequestParam(defaultValue 10) Integer pageSize) { PageUser page new Page(pageNum, pageSize); PageUser userPage userService.page(page); return Result.success(userPage); }启动项目后访问 http://localhost:8080/api/user/page?pageNum1pageSize2 即可验证分页效果。十、项目结构与运行验证完成上述代码后项目结构大致如下src/main/java/com/example/demo ├── DemoApplication.java ├── config │ └── MybatisPlusConfig.java ├── controller │ └── UserController.java ├── entity │ └── User.java ├── mapper │ └── UserMapper.java ├── service │ ├── UserService.java │ └── impl │ └── UserServiceImpl.java └── common └── Result.java启动项目后可以使用 curl 或 Postman 进行验证。例如新增一个用户curl -X POST http://localhost:8080/api/user \ -H Content-Type: application/json \ -d {name:赵六,age:26,email:zhaoliuexample.com}查询 ID 为 4 的用户curl http://localhost:8080/api/user/4如果控制台能看到 MyBatis-Plus 打印出的 SQL并且接口返回正确 JSON说明项目搭建成功。十一、常见问题与注意事项依赖版本不匹配Spring Boot 3 必须搭配 mybatis-plus-spring-boot3-starter不要使用旧版启动器。驱动类名错误MySQL 8 使用 com.mysql.cj.jdbc.DriverMySQL 5 使用 com.mysql.jdbc.Driver。数据库时区错误JDBC URL 中加入 serverTimezoneAsia/Shanghai避免时间转换异常。SQL 不打印确认 mybatis-plus.configuration.log-impl 配置正确且 Mapper 扫描路径设置无误。TableLogic 字段为空数据库字段需要设置默认值 0否则新增数据时可能因空值导致查询异常。十二、总结本文从项目创建、依赖引入、数据源配置、数据库建表到实体类、Mapper、Service、Controller 分层开发完整演示了 Spring Boot MyBatis-Plus 标准项目的搭建过程并补充了分页查询和接口验证示例。只要按照文中的步骤执行就可以得到一个可直接运行的项目骨架。在实际开发中还可以继续引入统一异常处理、参数校验、Swagger 文档、代码生成器等增强能力进一步规范项目结构、提升开发效率。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价