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

MyBatis 映射文件(Mapper XML):配置与使用

MyBatis 映射文件(Mapper XML):配置与使用

MyBatis是一个强大的Java持久化框架,它允许您将SQL查询、插入、更新和删除等操作与Java方法进行映射。这种映射是通过MyBatis的映射文件,通常称为Mapper XML文件来实现的。本文将深入探讨什么是MyBatis的映射文件以及如何配置和使用它们。

在这里插入图片描述

什么是 MyBatis 映射文件?

MyBatis的映射文件(Mapper XML文件)是用于定义SQL语句和Java方法之间映射关系的XML配置文件。这些文件提供了以下功能:

  • 定义 SQL 查询和操作: 在Mapper XML文件中,您可以定义SQL查询、插入、更新、删除等操作。这些SQL语句可以包含参数和结果映射。

  • 参数映射: 您可以在Mapper XML文件中指定如何映射方法的参数到SQL语句中的参数。这通常使用#{}占位符完成。

  • 结果映射: 您可以定义如何将SQL查询的结果映射到Java对象中。这通常使用<result>元素来完成。

  • 命名空间: 每个Mapper XML文件都有一个唯一的命名空间,用于标识这个Mapper的作用域。Mapper接口通常与Mapper XML文件的命名空间相对应。

  • 动态 SQL: Mapper XML文件还支持动态SQL,使您能够根据条件生成不同的SQL查询。

一个简单的Mapper XML文件示例如下:

<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper"><select id="getUserById" resultType="com.example.model.User">SELECT * FROM users WHERE id = #{id}</select>
</mapper>

在上述示例中,我们定义了一个名为getUserById的查询操作,它将根据id参数查询用户,并将结果映射到com.example.model.User类型的对象中。

配置 MyBatis 映射文件

要使用MyBatis的映射文件,您需要执行以下步骤:

步骤 1:创建 Mapper XML 文件

首先,创建一个Mapper XML文件,通常存放在项目的classpath下的一个目录中,例如src/main/resources/mapper

<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper"><!-- 查询用户信息 --><select id="getUserById" resultType="com.example.model.User">SELECT * FROM users WHERE id = #{id}</select><!-- 插入用户信息 --><insert id="insertUser" parameterType="com.example.model.User">INSERT INTO users (username, email) VALUES (#{username}, #{email})</insert>
</mapper>

在上述示例中,我们定义了两个操作:getUserByIdinsertUser,分别用于查询用户和插入用户信息。

步骤 2:配置 MyBatis

要使用Mapper XML文件,需要在MyBatis的配置文件中引入它们。MyBatis的配置文件通常是mybatis-config.xml,您需要在其中配置Mapper XML文件的路径。

<!-- mybatis-config.xml -->
<configuration><mappers><mapper resource="mapper/UserMapper.xml"/></mappers>
</configuration>

在上述配置中,我们使用<mappers>元素引入了Mapper XML文件,使用<mapper>元素的resource属性指定了XML文件的路径。

步骤 3:创建 Mapper 接口

通常情况下,会创建一个Java接口来定义SQL操作的方法,并使用注解来绑定Mapper XML文件中的SQL操作。

package com.example.mapper;import com.example.model.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;public interface UserMapper {@Select("SELECT * FROM users WHERE id = #{id}")User getUserById(int id);@Insert("INSERT INTO users (username, email) VALUES (#{username}, #{email})")int insertUser(User user);
}

在上述示例中,我们使用@Select@Insert注解来绑定Mapper XML文件中的SQL操作。这使得您可以通过Java接口来调用这些操作。

步骤 4:配置 MyBatis 数据源

最后,您需要配置MyBatis的数据源和其他相关属性。这通常在Spring Boot的配置文件中完成。

# application.yml
spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: your_passworddriver-class-name: com.mysql.cj.jdbc.Drivermybatis:config-location: classpath:mybatis-config.xml

在上述配置中,我们指定了数据库的连接信息,并通过mybatis.config-location属性指定了MyBatis的配置文件位置。

使用 MyBatis 映射文件

现在,您可以使用MyBatis映射文件来执行数据库操作了。以下是一个简单的示例:

@RestController
@RequestMapping("/users")
public class UserController {private final UserMapper userMapper;@Autowiredpublic UserController(UserMapper userMapper) {this.userMapper = userMapper;}@GetMapping("/{id}")public User getUser(@PathVariable int id) {return userMapper.getUserById(id);}@PostMapping("/")public String createUser(@RequestBody User user) {int rows = userMapper.insertUser(user);if (rows > 0) {return "User created successfully!";} else {return "User creation failed.";}}
}

在上述代码中,我们创建了一个UserController,它注入了UserMapper。通过getUser方法可以根据用户ID查询用户信息,通过createUser方法可以插入新用户信息。

运行 MyBatis 映射文件示例

现在,您可以运行应用程序并测试MyBatis映射文件的配置和使用。确保数据库连接信息正确,并通过REST API测试/users/{id}/users/端点。

总结

MyBatis的映射文件(

Mapper XML文件)是配置和管理SQL映射的关键部分。它们允许您将Java对象与数据库表之间的操作进行映射,从而实现了数据的持久化。通过创建Mapper XML文件、配置MyBatis、创建Mapper接口和使用注解,您可以轻松地进行数据库操作。

本文介绍了如何创建和配置MyBatis映射文件,以及如何使用它们执行数据库操作。希望这篇文章对您有所帮助,让您更好地理解MyBatis映射文件的概念和用法。 Happy coding!

相关文章:

MyBatis 映射文件(Mapper XML):配置与使用

MyBatis 映射文件&#xff08;Mapper XML&#xff09;&#xff1a;配置与使用 MyBatis是一个强大的Java持久化框架&#xff0c;它允许您将SQL查询、插入、更新和删除等操作与Java方法进行映射。这种映射是通过MyBatis的映射文件&#xff0c;通常称为Mapper XML文件来实现的。本…...

基于 SpringBoot 的大学生租房网站

文章目录 1 简介2 技术栈3 需求分析4 系统设计5 系统详细设计5.1系统功能模块5.2管理员模块5.3房主功能模块5.4用户功能模块 源码咨询 1 简介 本大学生租房系统使用简洁的框架结构&#xff0c;专门用于用户浏览首页&#xff0c;房屋信息&#xff0c;房屋评价&#xff0c;公告资…...

BL808学习日志-0-概念理解

一、主核心的介绍 1.三个核心在FREERTOS系统中相互独立&#xff0c;各负责各自的外设和程序&#xff1b;其中M0和LP核心在一个总线上&#xff0c;D0单独在一个总线上&#xff0c;两个总线使用AXI4.0(??)通讯&#xff1f; CPU0(M0)-E907架构&#xff0c;320MHz; CPU1(LP)-E9…...

CISSP学习笔记:业务连续性计划

第三章 业务连续性计划 3.1 业务连续性计划 业务连续性计划(BCP): 对组织各种过程的风险评估&#xff0c;发生风险的情况下为了使风险对组织的影响降至最小而定制的各种计划BCP和DRP首先考虑的人不受伤害&#xff0c;然后再解决IT恢复和还原问题BCP的主要步骤&#xff1a; 项…...

.NET Nuget包推荐安装

文章目录 前言通用WPFWebApiBlazor 前言 我这里的包主要是.NET Core的&#xff0c;.NET Framework可能不支持。 通用 Newtonsoft.Json&#xff1a;最常用的C#和Json对象互转的包。支持匿名对象&#xff0c;但是不支持Enum枚举类型&#xff0c;显示的是Enum的数值&#xff0c…...

【文献阅读】Pocket2Mol : 基于3D蛋白质口袋的高效分子采样 + CrossDocked数据集说明

Pocket2Mol: Efficient Molecular Sampling Based on 3D Protein Pockets code&#xff1a; GitHub - pengxingang/Pocket2Mol: Pocket2Mol: Efficient Molecular Sampling Based on 3D Protein Pockets 所用数据集 与“A 3D Generative Model for Structure-Based Drug Desi…...

TrustRadius 评论:为什么 Splashtop 优于 LogMeIn

在当今日益数字化的格局中&#xff0c;远程访问和远程支持工具不仅方便而且至关重要。无论对于居家办公人员&#xff0c;还是对于提供远程支持的 IT 专家&#xff0c;能够安全高效地访问远程系统已成为以技术为导向的日常生活的主要内容。 Splashtop 和 LogMeIn 是远程领域的两…...

【动态规划】动态规划经典例题 力扣牛客

文章目录 跳台阶 BM63 简单跳台阶扩展 JZ71 简单打家结舍 LC198 中等打家劫舍2 LC213中等最长连续递增序列 LC674 简单乘积最大子数组LC152 中等最长递增子序列LC300 中等最长重复子数组LC718最长公共子串NC BM66最长公共子序列LC1143 中等完全平方数LC279零钱兑换 LC322 中等单…...

统计模型----决策树

决策树 &#xff08;1&#xff09;决策树是一种基本分类与回归方法。它的关键在于如何构建这样一棵树。决策树的建立过程中&#xff0c;使用基尼系数来评估节点的纯度和划分的效果。基尼系数是用来度量一个数据集的不确定性的指标&#xff0c;其数值越小表示数据集的纯度越高。…...

C# List 复制之深浅拷贝

C# List 复制 之深浅拷贝 声明类 public class TestStu{public int Number{get;set; }public string Name{get;set; }}public static async Task<int> Main(string[] args){var stu1 new TestStu(){Number 1,Name "1"};var stu2 new TestStu(){Numbe…...

论<script> 标签可以直接写在 HTML 文件中的哪些位置?(可以将 <script> 标签直接插入到 HTML 文件的任何位置)

可以将 <script> 标签直接插入到 HTML 文件的任何位置&#xff0c;以在相应位置执行 JavaScript 代码。 以下是几个示例&#xff1a; 1.<head> 元素内部&#xff1a;在 <head> 元素内部放置 <script> 标签时&#xff0c;脚本将在页面加载过程中被下载和…...

【MySQL进阶】--- 存储引擎的介绍

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】&#x1f388; 本专栏旨在分享学习MySQL的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 一、什么…...

self-XSS漏洞SRC挖掘

本文由掌控安全学院 - 一朵花花酱 投稿 Markdown是一种轻量级标记语言&#xff0c;创始人为约翰格鲁伯&#xff08;John Gruber&#xff09;。它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的 XHTML&#xff08;或者HTML&#xff09;文档。这种语言吸…...

1859. 将句子排序

目录 一、题目 二、代码 一、题目 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 二、代码 定义了一个vector<vector<string>> v(MAX);采用const string& word : v[k] word 就会依次取得 v[k] 中的每个元素&#xff08;v[k][0],…...

普通学校,普通背景,普通公司,不普通总结。

作者&#xff1a;阿秀 InterviewGuide大厂面试真题网站&#xff1a;https://top.interviewguide.cn 这是阿秀的第「313」篇原创 小伙伴们大家好&#xff0c;我是阿秀。 可能很多人点开牛客、知乎、B站&#xff0c;一看帖子的标题都是"某985xxxx"、"不入流211xxx…...

Flink之Watermark生成策略

在Flink1.12以后,watermark默认是按固定频率周期性的产生. 在Flink1.12版本以前是有两种生成策略的: AssignerWithPeriodicWatermarks周期性生成watermarkAssignerWithPunctuatedWatermarks[已过时] 按照指定标记性事件生成watermark 新版本API内置的watermark策略 单调递增的…...

提升API文档编写效率,Dash for Mac是你的不二之选

在编写和开发API文档的过程中&#xff0c;你是否经常遇到查找困难、管理混乱、效率低下等问题&#xff1f;这些都是让人头疼的问题&#xff0c;但现在有了Dash for Mac&#xff0c;一切都将变得简单而高效。 Dash for Mac是一款专为API文档编写和管理设计的工具&#xff0c;它…...

无人注意,新安装的 Ubuntu 23.04 不支持安装 32 位应用

导读新安装的 Ubuntu 23.04 不支持安装 32 位应用。 无人注意&#xff0c;新安装的 Ubuntu 23.04 不支持安装 32 位应用 有用户报告&#xff0c;在新安装的 Ubuntu 23.04 上从 Ubuntu 仓库安装的 Steam 客户端是不工作的。在 Ubuntu 23.04 中使用了基于 Flutter 的新安装程序…...

全面横扫:dlib Python API在Linux和Windows的配置方案

前言 在计算机视觉和人工智能领域&#xff0c;dlib是一个备受推崇的工具库。它为开发者提供了强大的图像处理、机器学习和深度学习功能。在计算机视觉项目中&#xff0c;配置dlib Python API是一个重要的初始步骤。本文将引导读者详细了解在Linux和Windows系统上安装和配置dli…...

30种编程语言写国庆节快乐,收藏后改改留着拜年用

文章目录 核心代码版多行代码单行代码 核心代码版 Python&#xff1a;print(“国庆节快乐&#xff01;&#xff01;&#xff01;”)C&#xff1a;printf(“国庆节快乐&#xff01;&#xff01;&#xff01;”);C&#xff1a;cout<<“国庆节快乐&#xff01;&#xff01;…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...