MyBatis XML映射文件编写【后端 18】

devtools/2024/12/23 5:11:43/
xmlns="http://www.w3.org/2000/svg" style="display: none;">

MyBatis XML映射文件编写

请添加图片描述

MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs (Plain Old Java Objects, 普通的 Java 对象)映射成数据库中的记录。

在 MyBatis 中,XML 映射文件是非常关键的部分,它定义了如何将 Java 对象映射到 SQL 语句以及如何将 SQL 查询结果映射回 Java 对象。下面,我们将详细介绍如何编写 MyBatis 的 XML 映射文件。

1. XML 映射文件的基本结构

每个 MyBatis 的映射文件都包含了一个 <mapper> 元素作为根元素。在 <mapper> 元素内部,你可以定义多种映射语句,如 <select><insert><update><delete>

xml"><?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
<mapper namespace="com.example.mapper.UserMapper">  <!-- SQL 映射语句将在这里定义 -->  </mapper>
  • namespace:命名空间,它是绑定 MyBatis 接口的全路径名,用于唯一标识 mapper。
2. SQL 映射语句
2.1 <select>

用于查询操作。你可以使用 #{} 来进行参数替换,防止 SQL 注入。

xml"><select id="selectUserById" parameterType="int" resultType="com.example.domain.User">  SELECT * FROM users WHERE id = #{id}  
</select>
  • id:唯一标识符,与 Mapper 接口中的方法名对应。
  • parameterType:输入参数的类型。
  • resultType:SQL 查询返回的结果类型,即 Java 对象的全路径名。
2.2 <insert><update><delete>

这些标签分别用于插入、更新和删除操作。对于修改数据库的操作,MyBatis 支持使用 <selectKey> 来获取自动生成的主键。

xml"><insert id="insertUser" parameterType="com.example.domain.User">  <selectKey keyProperty="id" resultType="int" order="AFTER">  SELECT LAST_INSERT_ID()  </selectKey>  INSERT INTO users (name, email) VALUES (#{name}, #{email})  
</insert>
  • keyProperty:指定 Java 对象的哪个属性用于接收生成的主键值。
  • order:指定 <selectKey> 相对于插入语句的执行顺序,BEFOREAFTER
3. 映射复杂结果

对于复杂的查询,你可能需要将结果映射到多个 Java 对象或者映射到 Java 对象的集合中。MyBatis 提供了 <resultMap> 元素来支持复杂的映射。

xml"><resultMap id="userResultMap" type="com.example.domain.User">  <id property="id" column="user_id" />  <result property="username" column="user_name" />  <result property="email" column="email_address" />  <!-- 更多映射 -->  
</resultMap>  <select id="selectUsers" resultMap="userResultMap">  SELECT user_id, user_name, email_address FROM users  
</select>
  • :用于映射主键字段。
  • :用于映射非主键字段。
4. 注意事项
  • 确保 XML 文件的命名空间和路径与 Mapper 接口的全路径名一致。
  • <mapper> 标签内,避免使用 MyBatis 保留的关键字。
  • 仔细检查 SQL 语句中的参数替换,确保没有 SQL 注入的风险。
  • 使用 <resultMap> 可以更灵活地控制复杂对象的映射关系。

通过上面的介绍,你应该对 MyBatis 的 XML 映射文件编写有了基本的了解。在实际开发中,根据具体需求编写相应的 SQL 映射语句,将大大提高数据访问层的开发效率和灵活性。


http://www.ppmy.cn/devtools/116433.html

相关文章

一体化运维监控管理平台的全面监控能力

在当今高度信息化的时代&#xff0c;运维监控管理平台的重要性日益凸显。一个优秀的监控平台不仅要能够全面覆盖各类IT和智能设备&#xff0c;还需具备灵活性和可扩展性&#xff0c;以适应不断变化的监控需求。本文旨在深入探讨一体化运维监控管理平台的全面监控能力&#xff0…

obs录制没有声音

网上教我配置了一堆东西&#xff0c;弄了几个小时没弄好。正常可以参考这个https://zh-cn.echoshare.co/obs-not-recording-audio-desktop-mic/ &#xff0c;前面所有方法都没有用&#xff0c;然后卸载了&#xff0c;把所有配置都删掉&#xff0c;重新安装。然后就有声音了。问…

STM32——输入捕获

输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32的定时器&#xff0c;除了TIM6、TIM7&#xff0c;其他的定时器都有输入捕获的功能。应用场景是编码器。 测量频率 当捕获通道TIx 上出现上升沿时&#xff0c;发生第一次捕获&#xff0c;计数器CNT 的值会被锁存到捕获寄存…

周家庄智慧旅游小程序

项目概述 周家庄智慧旅游小程序将通过数字化手段提升游客的旅游体验&#xff0c;依托周家庄的自然与文化资源&#xff0c;打造智慧旅游新模式。该小程序将结合虚拟现实&#xff08;VR&#xff09;、增强现实&#xff08;AR&#xff09;和人工智能等技术&#xff0c;提供丰富的…

HarmonyOS ArkTS 用户首选项的开发及测试

本节以一个“账本”为例&#xff0c;使用首选项的相关接口实现了对账单的增、删、改、查操作&#xff0c;并使用自动化测试框架arkxtest来对应用进行自动化测试。 为了演示该功能&#xff0c;创建一个名为“ArkTSPreferences”的应用。应用源码可以在文末《跟老卫学HarmonyOS开…

【FFT】信号处理——快速傅里叶变换【通俗易懂】

快速傅里叶变换&#xff08;Fast Fourier Transform, FFT&#xff09;是一种用于将信号从时间域转换到频率域的算法。 傅里叶变换的核心思想是&#xff1a;任何周期性信号都可以分解成多个不同频率的正弦波或余弦波的叠加。 简单来说&#xff0c;FFT可以帮助我们理解一个信号…

【数据结构-栈】力扣844. 比较含退格的字符串

给定 s 和 t 两个字符串&#xff0c;当它们分别被输入到空白的文本编辑器后&#xff0c;如果两者相等&#xff0c;返回 true 。# 代表退格字符。 注意&#xff1a;如果对空文本输入退格字符&#xff0c;文本继续为空。 示例 1&#xff1a; 输入&#xff1a;s “ab#c”, t “…

Python爬虫之requests模块(一)

Python爬虫之requests模块&#xff08;一&#xff09; 学完urllib之后对爬虫应该有一定的了解了&#xff0c;随后就来学习鼎鼎有名的requests模块吧。 一、requests简介。 1、什么是request模块&#xff1f; requests其实就是py原生的一个基于网络请求的模块&#xff0c;模拟…