实用指南:Spring Boot与MyBatis

news/2026/1/22 8:12:20/文章来源:https://www.cnblogs.com/ljbguanli/p/19514897

实用指南:Spring Boot与MyBatis

Spring Boot与MyBatis的配置

一、简介

Spring Boot是一个用于创建独立的、基于Spring的生产级应用程序的框架,它简化了Spring应用的初始搭建以及开发过程。MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。将Spring Boot和MyBatis结合使用,可以高效地开发数据驱动的应用程序。

二、环境准备

(一)创建Spring Boot项目
  1. 可以使用Spring Initializr(https://start.spring.io/)来创建一个基础的Spring Boot项目。
    • 在创建项目时,选择合适的项目元数据,如项目的Group和Artifact等信息。
    • 可以选择添加一些常用的依赖,如Web依赖(如果项目需要提供Web服务)等。不过,对于MyBatis的集成,初始创建时不需要专门添加MyBatis相关依赖,我们后续手动添加。
  2. 下载生成的项目压缩包并解压到本地开发环境。
(二)添加MyBatis依赖
  1. 在项目的pom.xml(如果是Maven项目)中添加MyBatis和相关数据库驱动的依赖。
    • 对于MyBatis本身:

      org.mybatis.spring.bootmybatis - spring - boot - starter2.2.2
      
    • 如果使用MySQL数据库,添加MySQL驱动依赖:

      mysqlmysql - connector - java8.0.26
      

三、数据库配置

(一)配置数据源
  1. 在Spring Boot的配置文件(application.properties或者application.yml)中配置数据源相关信息。
    • 如果使用application.properties:

      spring.datasource.url = jdbc:mysql://localhost:3306/mydb?useSSL = false&serverTimezone = UTC
      spring.datasource.username = root
      spring.datasource.password = your_password
      spring.datasource.driver - class - name = com.mysql.cj.jdbc.Driver
    • 如果使用application.yml:

      spring:datasource:url: jdbc:mysql://localhost:3306/mydb?useSSL = false&serverTimezone = UTCusername: rootpassword: your_passworddriver - class - name: com.mysql.cj.jdbc.Driver

四、MyBatis配置

(一)实体类创建
  1. 根据数据库表结构创建对应的实体类。例如,如果有一个名为“user”的表,结构如下:

    CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50),password VARCHAR(50)
    );
    • 对应的Java实体类为:

      public class User {private Integer id;private String username;private String password;// 生成getter和setter方法public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
      }
(二)Mapper接口创建
  1. 创建Mapper接口来定义与数据库交互的方法。
    • 例如,创建一个UserMapper接口:

      @Mapper
      public interface UserMapper {User selectUserById(Integer id);int insertUser(User user);int updateUser(User user);int deleteUserById(Integer id);
      }
    • 这里的@Mapper注解(如果使用注解方式)用于将该接口标记为MyBatis的Mapper接口,这样Spring Boot就能够识别并自动创建该接口的代理实现。

(三)Mapper XML文件创建(如果使用XML方式)
  1. 如果不使用注解方式编写SQL语句,而是使用XML文件,则需要创建Mapper XML文件。
    • 在resources/mapper目录下创建UserMapper.xml(假设项目采用的是Maven的标准目录结构)。

    • 内容如下:

      INSERT INTO user (username, password) VALUES (#{username}, #{password})UPDATE user SET username = #{username}, password = #{password} WHERE id = #{id}DELETE FROM user WHERE id = #{id}
      
    • 这里的namespace属性的值要与对应的Mapper接口的全限定名相同。

(四)配置MyBatis扫描路径
  1. 如果使用XML方式的Mapper文件,需要在Spring Boot配置文件中配置MyBatis的Mapper扫描路径。
    • 在application.properties中:

      mybatis.mapper - locations = classpath:mapper/*.xml
    • 在application.yml中:

      mybatis:mapper - locations: classpath:mapper/*.xml

五、使用MyBatis进行数据操作

(一)在Service层调用Mapper方法
  1. 创建一个UserService类来调用UserMapper中的方法。
    • 例如:

      @Service
      public class UserService {@Autowiredprivate UserMapper userMapper;public User getUserById(Integer id) {return userMapper.selectUserById(id);}public int addUser(User user) {return userMapper.insertUser(user);}public int updateUserInfo(User user) {return userMapper.updateUser(user);}public int deleteUser(int id) {return userMapper.deleteUserById(id);}
      }
    • 这里通过@Autowired注解注入UserMapper实例,然后就可以在Service方法中调用Mapper中的数据操作方法。

(二)在Controller层调用Service方法(如果是Web应用)
  1. 创建一个UserController类(假设是一个Web应用,需要提供RESTful接口等)。

    @RestController
    public class UserController {@Autowiredprivate UserService userService;@GetMapping("/user/{id}")public User getUserById(@PathVariable("id") Integer id) {return userService.getUserById(id);}@PostMapping("/user")public int addUser(@RequestBody User user) {return userService.addUser(user);}@PutMapping("/user")public int updateUser(@RequestBody User user) {return userService.updateUserInfo(user);}@DeleteMapping("/user/{id}")public int deleteUser(@PathVariable("id") Integer id) {return userService.deleteUser(id);}
    }
    • 这里同样通过@Autowired注解注入UserService实例,然后在Controller的各个方法中调用Service方法,实现了从Web请求到数据操作的完整流程。

六、事务管理

  1. 在Spring Boot中管理MyBatis的事务非常方便。
    • 如果要在某个Service方法上添加事务管理,可以使用@Transactional注解。例如:

      @Service
      public class UserService {@Autowiredprivate UserMapper userMapper;@Transactionalpublic int addUser(User user) {// 一些业务逻辑判断等操作int result = userMapper.insertUser(user);// 如果插入成功后还有其他操作,如更新相关联的数据等return result;}
      }
    • 这样,如果在addUser方法中的任何一个数据库操作出现异常,整个事务都会回滚,保证数据的一致性。

七、高级配置

(一)配置MyBatis的缓存
  1. MyBatis提供了一级缓存和二级缓存。
    • 一级缓存是基于SqlSession的,默认是开启的。

    • 二级缓存可以通过在Mapper接口或者Mapper XML文件中配置开启。

    • 在Mapper XML文件中配置二级缓存:

    • 这里的标签用于配置二级缓存的相关属性,如缓存的清除策略(eviction)、刷新间隔(flushInterval)、缓存大小(size)和是否只读(readOnly)等。

(二)配置MyBatis的插件
  1. MyBatis允许使用插件来扩展其功能。例如,可以使用PageHelper插件来实现分页功能。
    • 首先添加PageHelper的依赖:

      com.github.pagehelperpagehelper - spring - boot - starter1.3.0
      
    • 然后在配置文件中进行简单配置(以application.yml为例):

      pagehelper:helper - dialect: mysqlreasonable: truesupport - methods - arguments: true
    • 在使用分页查询时,在Mapper接口方法调用之前使用PageHelper.startPage方法即可。例如:

      public class UserService {@Autowiredprivate UserMapper userMapper;public List getUsersByPage(int pageNum, int pageSize) {PageHelper.startPage(pageNum, pageSize);return userMapper.selectAllUsers();}
      }

通过以上的配置和操作步骤,就可以在Spring Boot项目中成功地集成和使用MyBatis进行高效的数据持久化操作,无论是简单的CRUD操作还是涉及到高级功能如事务管理、缓存和插件的使用等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1198951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看完就会!YOLO11图像分割项目结构解析与运行方法详解

看完就会!YOLO11图像分割项目结构解析与运行方法详解 1. 快速上手:YOLO11环境准备与项目入口 你是不是也经常被复杂的深度学习项目结构搞得一头雾水?明明只是想跑个图像分割,结果光看目录就花了半小时。别急,今天我们…

Qwen-Image-Edit-2511效果惊艳!AI修图项目完整过程分享

Qwen-Image-Edit-2511效果惊艳!AI修图项目完整过程分享 你有没有遇到过这样的情况:手头有一张产品图,背景杂乱,模特姿势不错但衣服颜色不对,想换又舍不得重拍?传统修图软件要么得一点点抠图,要…

从真人到二次元|利用DCT-Net GPU镜像实现高质量图像风格迁移

从真人到二次元|利用DCT-Net GPU镜像实现高质量图像风格迁移 你有没有想过,一张普通的人像照片,只需几秒就能变成日漫风的二次元角色?不是简单的滤镜叠加,而是连发丝、光影和表情神韵都高度还原的卡通化效果。如今&am…

IQuest-Coder-V1值得部署吗?128K长文本处理实战评测

IQuest-Coder-V1值得部署吗?128K长文本处理实战评测 1. 这个模型到底能做什么? 你有没有遇到过这样的情况:接手一个老项目,代码库动辄几万行,文档缺失,逻辑分散在十几个文件里,光是理清调用关…

DCT-Net GPU镜像核心优势|RTX 40系显卡高效人像卡通转换

DCT-Net GPU镜像核心优势|RTX 40系显卡高效人像卡通转换 本文深入解析DCT-Net人像卡通化GPU镜像的技术亮点与实战应用,重点展示其在RTX 40系列显卡上的卓越性能表现。无需复杂配置,一键部署即可实现高质量二次元形象生成,适合AI绘…

快速生成AI讲解视频:Live Avatar应用场景实测

快速生成AI讲解视频:Live Avatar应用场景实测 1. 引言:数字人视频生成的新选择 你有没有想过,只需要一张照片和一段音频,就能让一个“数字人”为你自动讲解内容?这不再是科幻电影里的场景。今天我们要实测的 Live Av…

NewBie-image-Exp0.1支持多角色吗?XML结构化提示词实战详解

NewBie-image-Exp0.1支持多角色吗?XML结构化提示词实战详解 你是否也遇到过在生成动漫图像时,多个角色的特征总是“串门”——发色对不上、动作混乱、属性错位?传统文本提示词在处理复杂构图和多角色场景时常常力不从心。而今天我们要深入探…

IQuest-Coder-V1 vs StarCoder2实战对比:复杂工具使用场景评测

IQuest-Coder-V1 vs StarCoder2实战对比:复杂工具使用场景评测 1. 引言:当代码模型遇上真实开发挑战 你有没有遇到过这样的情况:写代码时不仅要调用API,还得操作数据库、生成文档、运行测试脚本,甚至要和Docker容器打…

MinerU适合科研团队吗?文献管理自动化方案

MinerU适合科研团队吗?文献管理自动化方案 1. 引言:科研文献处理的痛点与新解法 对于科研团队来说,每天面对大量PDF格式的学术论文是常态。从文献阅读、信息提取到笔记整理,整个流程高度依赖人工操作——不仅要逐字阅读&#xf…

YOLOv9适合新手吗?零基础入门必看的部署实操指南

YOLOv9适合新手吗?零基础入门必看的部署实操指南 你是不是也听说过YOLOv9,但一直不敢下手?担心环境配置复杂、代码跑不起来、训练过程一堆报错?别急,这篇文章就是为你准备的。我们不讲复杂的原理,也不堆砌…

NewBie-image-Exp0.1安全性说明:镜像依赖组件漏洞扫描结果公开

NewBie-image-Exp0.1安全性说明:镜像依赖组件漏洞扫描结果公开 1. 镜像概述与核心价值 NewBie-image-Exp0.1 是一个专为动漫图像生成任务设计的预置 AI 镜像,集成了完整的运行环境、修复后的源码以及优化配置。该镜像基于 Next-DiT 架构,搭…

输入任意文字就能检测,YOLOE太强大了

输入任意文字就能检测,YOLOE太强大了 1. 引言:让目标检测真正“看见一切” 你有没有遇到过这样的问题?训练好的模型只能识别固定的几类物体,一旦出现新类别就束手无策。传统目标检测就像戴着一副“有色眼镜”,看世界…

GPEN输出色彩失真?OpenCV与PIL颜色空间转换

GPEN输出色彩失真?OpenCV与PIL颜色空间转换 你有没有遇到过这种情况:用GPEN修复完一张老照片,人脸细节清晰了、皮肤光滑了,结果一看——脸色发绿、嘴唇发紫,整体色调像极了上世纪的老式胶片?别急&#xff…

FRCRN语音降噪镜像使用指南|附ClearerVoice-Studio同款实践

FRCRN语音降噪镜像使用指南|附ClearerVoice-Studio同款实践 你是否经常被录音中的背景噪音困扰?会议录音听不清、播客音质差、语音识别准确率低——这些问题大多源于环境噪声。今天我们要介绍的 FRCRN语音降噪-单麦-16k 镜像,正是为解决这类…

AI办公新姿势:用UI-TARS-desktop打造智能工作助手

AI办公新姿势:用UI-TARS-desktop打造智能工作助手 你是否曾幻想过,只需动动嘴或敲几行字,电脑就能自动完成打开浏览器、查找资料、整理文件甚至填写表格的任务?这不再是科幻电影的桥段。借助 UI-TARS-desktop,一个集成…

RexUniNLU功能测评:中文事件抽取能力实测

RexUniNLU功能测评:中文事件抽取能力实测 1. 引言 你有没有遇到过这样的场景:一堆新闻、公告或社交媒体内容摆在面前,需要快速提取出“谁在什么时候做了什么”这类关键信息?传统做法是人工阅读、标注、整理,费时又费…

DeepSeek与Qwen3-4B性能对比:科学计算场景实战评测

DeepSeek与Qwen3-4B性能对比:科学计算场景实战评测 1. 背景与测试目标 在当前AI大模型快速发展的背景下,越来越多的开发者和科研人员开始关注模型在专业领域的实际表现,尤其是科学计算这类对逻辑推理、数学能力和代码生成要求较高的任务。本…

ComfyUI用户必看:Qwen-Image-2512适配使用指南

ComfyUI用户必看:Qwen-Image-2512适配使用指南 随着阿里开源的Qwen系列图像生成模型持续迭代,最新版本Qwen-Image-2512在细节还原、语义理解与多图协同生成方面实现了显著提升。对于ComfyUI用户而言,如何快速部署并稳定运行这一新版本模型&a…

BGE-M3性能优化:让你的检索速度提升3倍

BGE-M3性能优化:让你的检索速度提升3倍 你是否遇到过这样的问题:在使用文本嵌入模型进行语义搜索时,响应慢、延迟高,尤其是在处理长文档或大规模数据集时,系统几乎“卡死”?如果你正在用BGE-M3做信息检索&…

Qwen3-4B内存占用高?轻量化部署+显存优化实战案例

Qwen3-4B内存占用高?轻量化部署显存优化实战案例 1. 问题背景:大模型推理的显存瓶颈 你有没有遇到过这种情况:想本地跑个Qwen3-4B-Instruct-2507,结果刚一加载模型,显存直接爆了?明明是4090D这种旗舰级消…