当前位置: 首页 > news >正文

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 包下:

        这个类的属性 uidunameupwd 分别对应数据库表 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 层和组件注入的开发。

http://www.dtcms.com/a/478584.html

相关文章:

  • Java EE初阶--多线程
  • 深入理解梯度消失:从DNN到RNN的全面解析与解决方案
  • 南京电子商务网站开发公司石油化工工程建设人才招聘网站
  • 大数据实战:Python+Flask 汽车数据分析可视化系统(爬虫+线性回归预测+推荐 源码+文档)✅
  • 算法8.0
  • 网站左侧导航栏设计一个网站的建设要经过哪几个阶段
  • Java-Linux环境下查看JDK安装路径
  • 嘉立创学习
  • QML学习笔记(三十四)QML的GroupBox、RadioButton
  • AI Agent 的技术架构、产业赋能与治理挑战研究 —— 基于 2024-2025 年技术突破与应用实践的分析
  • 设计美观网站有哪些辽宁网站建设价位
  • vtkFillHolesFilter——3D网格补孔的“一键修复”工具,从原理到避坑
  • 网站建设完整代码深圳开公司流程及费用
  • Vue3为什么选择用Vite?使用指南与优势解析
  • 【STL】set容器(2336.无限集中的最小数字)
  • 第一章 计算机系统概论1
  • Cannot invoke “String.length()“ because “<parameter1>“ is null
  • H5使用环信实现视频或语音通话
  • SMTPman高效稳定的smtp服务器使用指南解析
  • 《Qt应用开发》笔记p3
  • Java-148 深入浅出 MongoDB 聚合操作:$match、$group、$project、$sort 全面解析 Pipeline 实例详解与性能优化
  • Oops 概念
  • 用老域名做新网站 权重怎么传递哈尔滨网站建设公司哪家好
  • Servlet内存马
  • 为什么要使用反射举例
  • python开发生态及学习路线和应用领域都有哪些
  • bk7258 交叉编译libzip-1.11.4
  • 汽车级mosfet的应用场景
  • 手机做ppt的免费模板下载网站深圳自适应网站的公司
  • svn 库 co 下来有白叉