SpringBoot + MyBatis 注解开发入门实践
目录
一、项目搭建与依赖配置
1.1 项目结构
1.2 Maven核心依赖
1.3 配置文件
二、模型层(Model)
三、数据访问层(Dao)
四、控制层(Controller)
五、项目启动类
六、运行与测试
6.1 启动项目
6.2 接口测试
七、项目总结
在 Java 后端开发领域,SpringBoot 以其快速搭建项目、简化配置的特性广受欢迎,MyBatis 则是一款灵活的持久层框架。在本篇博客中,我们将学习如何使用 SpringBoot 整合 MyBatis 进行注解式开发,实现一个简单的用户数据查询功能。相比于传统的 XML 配置方式,注解开发更加简洁明了。
一、项目搭建与依赖配置
1.1 项目结构
首先来看我们的项目结构,采用了典型的 Maven 项目分层:
-
controller:控制层,负责接收请求并返回响应。 -
dao:数据访问层,定义数据库操作接口。 -
model:模型层,对应数据库表的实体类。 -
resources:资源目录,存放配置文件等。

1.2 Maven核心依赖
在 pom.xml 中,引入了关键依赖:
-
spring-boot-starter-web:提供 SpringBoot Web 开发所需的基础组件,如控制器、Servlet 容器等。 -
mybatis-spring-boot-starter:实现 MyBatis 与 SpringBoot 的无缝整合,简化 MyBatis 相关配置。 -
mysql-connector-java:MySQL 数据库的 JDBC 驱动,用于建立数据库连接。
<dependencies><!-- SpringBoot Web 依赖,用于构建 Web 应用 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- SpringBoot 测试依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- MyBatis 与 SpringBoot 整合依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.1</version> <!-- 请检查最新版本 --></dependency><!-- MySQL 驱动依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.24</version></dependency>
</dependencies>
1.3 配置文件
在 resources目录下的application.properties文件中,配置数据库连接信息和 MyBatis 相关设置:
-
spring.datasource相关配置:指定了数据库驱动、用户名、密码和连接地址,这里连接的是本地 MySQL 数据库的jk202508库。 -
mybatis.type-aliases-package:设置 MyBatis 类型别名的包路径,这样在 Mapper 中可以直接使用实体类名,而无需写全类名。 -
logging.level.com.pp.springbootmybatis.dao=debug:将dao包下的日志级别设为debug,在控制台能看到 MyBatis 执行的 SQL 语句等调试信息。
# 配置服务端口 server.port=8090# 数据库连接配置 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.username=root spring.datasource.password=152602 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/jk202508# MyBatis 配置:指定实体类所在包,用于类型别名 mybatis.type-aliases-package=com.pp.springbootmybatis.model # 开启 dao 层日志调试,方便查看 SQL 执行情况 logging.level.com.pp.springbootmybatis.dao=debug
二、模型层(Model)
创建与数据库表 t_user 对应的实体类 Users,位于 com.pp.springbootmybatis.model 包下:
这个类的属性 uid、uname、upwd 分别对应数据库表 t_user 的字段,通过 Getter 和 Setter 方法实现属性的访问和修改。
package com.pp.springbootmybatis.model;public class Users {private int uid;private String uname;private String upwd;public int getUid() {return uid;}public void setUid(int uid) {this.uid = uid;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}public String getUpwd() {return upwd;}public void setUpwd(String upwd) {this.upwd = upwd;}}
三、数据访问层(Dao)
在 com.pp.springbootmybatis.dao 包下创建 IUserDao 接口,使用 MyBatis 注解进行数据库操作:
-
@Mapper注解:告诉 SpringBoot 这是一个 MyBatis 的 Mapper 接口,框架会自动为其生成实现类,无需手动编写 DAO 实现。 -
@Select注解:用于执行查询操作,括号内的 SQL 语句会被 MyBatis 执行,这里是查询t_user表的所有数据,并将结果封装为Users实体类的列表返回。
package com.pp.springbootmybatis.dao;import com.pp.springbootmybatis.model.Users;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.util.List;@Mapper // 标记为 MyBatis 的 Mapper 接口,SpringBoot 会自动扫描并生成实现类
public interface IUserDao {@Select("select * from t_user")public List<Users> queryListUser(); // 查询所有用户信息,返回 Users 对象列表}
四、控制层(Controller)
在 com.pp.springbootmybatis.controller 包下创建 DataController,作为 Web 层接收请求并调用 DAO 层方法:
-
@RestController:是@Controller和@ResponseBody的组合,表明该类中的方法返回值会直接以 JSON 等格式响应给客户端,无需再使用@ResponseBody注解。 -
@RequestMapping:用于映射 HTTP 请求路径,@RequestMapping("/data")表示该控制器下的所有请求路径都以/data为前缀,@RequestMapping("/stus")则具体映射到/data/stus路径。 -
@Autowired:自动装配IUserDao实例,SpringBoot 会根据类型找到对应的 Bean 并注入。 -
在
loadStusData方法中,调用dao.queryListUser()方法查询用户数据,并将结果返回,SpringBoot 会自动将返回的List<Users>转换为 JSON 格式响应给客户端。
package com.pp.springbootmybatis.controller;import com.pp.springbootmybatis.dao.IUserDao;
import com.pp.springbootmybatis.model.Users;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController // 组合注解,相当于 @Controller + @ResponseBody,表示该类是 REST 控制器,返回值直接转为 JSON
@RequestMapping("/data") // 映射请求路径前缀
public class DataController {// 自动注入 IUserDao 实例@Autowiredprivate IUserDao dao;// 映射请求路径为 /data/stus@RequestMapping("/stus")public List<Users> loadStusData(){System.out.println("DataController is loadStusData start....");// 调用 DAO 方法查询用户列表List<Users> lists = this.dao.queryListUser();// 返回查询结果,会自动转为 JSON 格式return lists;}
}
五、项目启动类
在 com.pp.springbootmybatis 包下的SpringbootmybatisApplication 类,就是项目的启动入口:
-
@SpringBootApplication:是 SpringBoot 的核心注解,包含了@Configuration(表明是配置类)、@EnableAutoConfiguration(开启自动配置)、@ComponentScan(扫描组件,默认扫描当前包及其子包下的组件)等注解的功能,让 SpringBoot 能自动完成大量配置工作。 -
SpringApplication.run(SpringbootmybatisApplication.class, args):启动 SpringBoot 应用,加载配置并启动内嵌的 Servlet 容器(如 Tomcat)。
package com.pp.springbootmybatis;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication // 组合注解,包含 @Configuration、@EnableAutoConfiguration、@ComponentScan 等,开启自动配置和组件扫描
public class SpringbootmybatisApplication {// 启动 SpringBoot 应用public static void main(String[] args) {SpringApplication.run(SpringbootmybatisApplication.class, args);}}
六、运行与测试
6.1 启动项目
运行 SpringbootmybatisApplication 类的 main 方法,启动 SpringBoot 应用。控制台会输出启动日志,看到类似以下内容表示启动成功:

6.2 接口测试
使用浏览器访问 http://localhost:8090/data/stus,如果数据库 jk202508 的 t_user 表中有数据,会得到类似以下的 JSON 响应:


同时,在控制台能看到 MyBatis 执行的 SQL 日志,方便调试:

七、项目总结
通过本篇博客的实践,我们完成了一个简单的 SpringBoot + MyBatis 注解开发的项目。整个过程充分体现了 SpringBoot 简化配置、快速开发的优势,以及 MyBatis 注解开发在数据访问层的便捷性。
-
依赖管理:借助 Maven 高效管理项目依赖。
-
配置简化:
application.properties集中配置数据库和 MyBatis 相关信息。 -
注解驱动:MyBatis 的
@Mapper、@Select等注解,让 DAO 层开发无需编写 XML 映射文件;Spring 的@RestController、@Autowired等注解,简化了 Web 层和组件注入的开发。
