48、Spring Boot 详细讲义(五)

3、集成MyBatis

3.1 MyBatis 概述

3.1.1 核心功能和优势

MyBatis 是一个 Java 持久层框架,它通过 XML 或注解配置 SQL 语句,将 Java 方法与 SQL 语句映射起来,消除了大量的 JDBC 代码,简化了数据库操作。MyBatis 的核心功能和优势包括:

  1. ORM(对象关系映射):通过 XML 配置文件或注解将 Java 对象与数据库表映射,自动化对象数据与数据库记录之间的转换。
  2. 动态 SQL:基于输入参数动态生成 SQL 语句,灵活处理各种查询条件。
  3. 代码简化:通过配置管理 SQL 语句,减少了手动编写 JDBC 的代码量。
  4. 跨数据库支持:支持多种数据库,如 MySQL、Oracle、PostgreSQL 等,提高了应用程序的可移植性。
  5. 与 Spring 集成:与 Spring 框架无缝集成,支持声明式事务管理和依赖注入。
3.1.2 动态 SQL 功能

MyBatis 的动态 SQL 功能允许在运行时根据条件动态生成 SQL 语句。常用的动态 SQL 元素包括:

  • <if>:根据条件包含或排除某个 SQL 片段。
  • <choose>:类似于 if-else,根据条件选择一个 SQL 片段。
  • <trim>:用于修饰周围的内容,如去除多余的 AND 或 OR。
  • <foreach>:用于批量处理,遍历集合参数。
  • <set>:用于更新语句,动态包含字段。

示例:

<select id="findUserByCondition" resultType="User">  SELECT * FROM users  <where>  <if test="username != null">  username LIKE '%'${username}'%'  </if>  <if test="email != null">  AND email = '${email}'  </if>  </where>  
</select>  

3.2 与 Spring Boot 集成

3.2.1 依赖和自动配置

在 Spring Boot 项目中集成 MyBatis,在pom.xml文件中添加Mybatis,Spring web 等相关依赖

<!--lombok-->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version>
</dependency><!--mysql-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version>
</dependency><!--mybatis-->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version>
</dependency><!--druid-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.21</version>
</dependency><!-- spring web 需要的包 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope>
</dependency>
3.2.2 创建映射文件

MyBatis 的 SQL 映射文件需要放置在 src/main/resources 目录下,具体路径与包结构对应。例如:在resources目录下创建一个mapper文件夹,用来存储所有的mapper.xml文件

src/main/resources/  └── mapper  └── UserMapper.xml  
3.2.3 @Mapper 接口和扫描

在 Spring Boot 中,可以通过 @Mapper 注解标记 Mapper 接口,或者通过 @MapperScan 扫描指定包下的所有 Mapper 接口。

  1. 使用 @Mapper 注解
@Mapper  
public interface UserMapper {  List<User> findAllUsers();  User findUserById(Long id);  void insertUser(User user);  
}  
  1. 配置 @MapperScan

    在入口类上添加注解

@SpringBootApplication  
@MapperScan("com.example.mybatis.mapper")  
public class MyBatisApp {  public static void main(String[] args) {  SpringApplication.run

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

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

相关文章

BERT - Bert模型框架复现

本节将实现一个基于Transformer架构的BERT模型。 1. MultiHeadAttention 类 这个类实现了多头自注意力机制&#xff08;Multi-Head Self-Attention&#xff09;&#xff0c;是Transformer架构的核心部分。 在前几篇文章中均有讲解&#xff0c;直接上代码 class MultiHeadAtt…

解决 Spring Boot 启动报错:数据源配置引发的启动失败

启动项目时&#xff0c;控制台输出了如下错误信息&#xff1a; Error starting ApplicationContext. To display the condition evaluation report re-run your application with debug enabled. 2025-04-14 21:13:33.005 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporte…

履带小车+六轴机械臂(2)

本次介绍原理图部分 开发板部分&#xff0c;电源供电部分&#xff0c;六路舵机&#xff0c;PS2手柄接收器&#xff0c;HC-05蓝牙模块&#xff0c;蜂鸣器&#xff0c;串口&#xff0c;TB6612电机驱动模块&#xff0c;LDO线性稳压电路&#xff0c;按键部分 1、开发板部分 需要注…

【开发记录】服务外包大赛记录

参加服务外包大赛的A07赛道中&#xff0c;最近因为频繁的DEBUG&#xff0c;心态爆炸 记录错误 以防止再次出现错误浪费时间。。。 2025.4.13 项目在上传图片之后 会自动刷新 没有等待后端返回 Network中的fetch /upload显示canceled. 然而这是使用了VS的live Server插件才这样&…

基于FreeRTOS和LVGL的多功能低功耗智能手表(硬件篇)

目录 一、简介 二、板子构成 三、核心板 3.1 MCU最小系统板电路 3.2 电源电路 3.3 LCD电路 3.4 EEPROM电路 3.5 硬件看门狗电路 四、背板 4.1 传感器电路 4.2 充电盘 4.3 蓝牙模块电路 五、总结 一、简介 本篇开始介绍这个项目的硬件部分&#xff0c;从最小电路设…

为 Kubernetes 提供智能的 LLM 推理路由:Gateway API Inference Extension 深度解析

现代生成式 AI 和大语言模型&#xff08;LLM&#xff09;服务给 Kubernetes 带来了独特的流量路由挑战。与典型的短时、无状态 Web 请求不同&#xff0c;LLM 推理会话通常是长时运行、资源密集且部分有状态的。例如&#xff0c;一个基于 GPU 的模型服务器可能同时维护多个活跃的…

MacOs下解决远程终端内容复制并到本地粘贴板

常常需要在服务器上捣鼓东西&#xff0c;同时需要将内容复制到本地的需求。 1-内容是在远程终端用vim打开&#xff0c;如何用vim的类似指令达到快速复制到本地呢&#xff1f; 假设待复制的内容&#xff1a; #include <iostream> #include <cstring> using names…

STM32 vs ESP32:如何选择最适合你的单片机?

引言 在嵌入式开发中&#xff0c;STM32 和 ESP32 是两种最热门的微控制器方案。但许多开发者面对项目选型时仍会感到困惑&#xff1a;到底是选择功能强大的 STM32&#xff0c;还是集成无线的 ESP32&#xff1f; 本文将通过 硬件资源、开发场景、成本分析 等多维度对比&#xf…

【blender小技巧】Blender导出带贴图的FBX模型,并在unity中提取材质模型使用

前言 这其实是我之前做过的操作&#xff0c;我只是单独提取出来了而已。感兴趣可以去看看&#xff1a;【blender小技巧】使用Blender将VRM或者其他模型转化为FBX模型&#xff0c;并在unity使用&#xff0c;导出带贴图的FBX模型&#xff0c;贴图材质问题修复 一、导出带贴图的…

如何保证本地缓存和redis的一致性

1. Cache Aside Pattern&#xff08;旁路缓存模式&#xff09;​​ ​核心思想​&#xff1a;应用代码直接管理缓存与数据的同步&#xff0c;分为读写两个流程&#xff1a; ​读取数据​&#xff1a; 先查本地缓存&#xff08;如 Guava Cache&#xff09;。若本地未命中&…

k8s通过service标签实现蓝绿发布

k8s通过service标签实现蓝绿发布 通过k8s service label标签实现蓝绿发布方法1:使用kubelet完成蓝绿切换1. 创建绿色版本1.1 创建绿色版本 Deployment1.2 创建绿色版本 Service 2. 创建蓝色版本2.1 创建蓝色版本 Deployment2.2 创建蓝色版本 Service 3. 创建蓝绿切换SVC (用于外…

智慧酒店企业站官网-前端静态网站模板【前端练习项目】

最近又写了一个静态网站&#xff0c;智慧酒店宣传官网。 使用的技术 html css js 。 特别适合编程学习者进行网页制作和前端开发的实践。 项目包含七个核心模块&#xff1a;首页、整体解决方案、优势、全国案例、行业观点、合作加盟、关于我们。 通过该项目&#xff0c;小伙伴们…

Epplus 8+ 许可证设置

Epplus 8 之后非商业许可证的设置变了如果还用普通的方法会报错 Unhandled exception. OfficeOpenXml.LicenseContextPropertyObsoleteException: Please use the static ‘ExcelPackage.License’ property to set the required license information from EPPlus 8 and later …

CST1016.基于Spring Boot+Vue高校竞赛管理系统

计算机/JAVA毕业设计 【CST1016.基于Spring BootVue高校竞赛管理系统】 【项目介绍】 高校竞赛管理系统&#xff0c;基于 DeepSeek Spring AI Spring Boot Vue 实现&#xff0c;功能丰富、界面精美 【业务模块】 系统共有两类用户&#xff0c;分别是学生用户和管理员用户&a…

2025年第十六届蓝桥杯省赛C++ 研究生组真题

2025年第十六届蓝桥杯省赛C 研究生组真题 1.说明2.题目A&#xff1a;数位倍数&#xff08;5分&#xff09;3.题目B&#xff1a;IPv6&#xff08;5分&#xff09;4.题目C&#xff1a;变换数组&#xff08;10分&#xff09;5.题目D&#xff1a;最大数字&#xff08;10分&#xff…

空调开机启动后发出噼里啪啦的异响分析与解决

背景 当空调使用时由于制冷或制热运转时&#xff08;关机后可能也会出现&#xff09;&#xff0c;塑料件热胀冷缩引起&#xff0c;可能会出现“咔咔”的声音&#xff1b;空调冷媒在空调内管路流动时会出现轻微的“沙沙”的声音&#xff1b;也有可能是新装的空调摆风轴出现响声…

BERT、T5、ViT 和 GPT-3 架构概述及代表性应用

BERT、T5、ViT 和 GPT-3 架构概述 1. BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09; 架构特点 基于 Transformer 编码器&#xff1a;BERT 使用多层双向 Transformer 编码器&#xff0c;能够同时捕捉输入序列中每个词的左右上下文信息…

选导师原理

总述 一句话总结&#xff1a;是雷一定要避&#xff0c;好的一定要抢。方向契合最好&#xff0c;不契合适当取舍。 首先明确自身需求&#xff1a; 我要学东西&#xff01;青年导师&#xff0c;好沟通&#xff0c;有冲劲&#xff0c;高压力。 我要摆烂&#xff01;中老年男性教…

【过程控制系统】PID算式实现,控制系统分类,工程应用中控制系统应该注意的问题

目录 1-1 试简述过程控制的发展概况及各个阶段的主要特点。 1-2 与其它自动控制相比&#xff0c;过程控制有哪些优点&#xff1f;为什么说过程控制的控制过程多属慢过程&#xff1f; 1-3 什么是过程控制系统&#xff0c;其基本分类是什么&#xff1f; 1-4 何为集散控制系统…

2025年第十六届蓝桥杯省赛真题解析 Java B组(简单经验分享)

之前一年拿了国二后&#xff0c;基本就没刷过题了&#xff0c;实力掉了好多&#xff0c;这次参赛只是为了学校的加分水水而已&#xff0c;希望能拿个省三吧 >_< 目录 1. 逃离高塔思路代码 2. 消失的蓝宝思路代码 3. 电池分组思路代码 4. 魔法科考试思路代码 5. 爆破思路…