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

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

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 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 注入。

<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> 来获取自动生成的主键。

<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> 元素来支持复杂的映射。

<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.kler.cn/news/308385.html

相关文章:

  • BFS 解决边权为1的最短路问题
  • BUUCTF逆向wp [WUSTCTF2020]level3
  • k8s介绍及部署
  • stm32 SPI通信外设(硬件SPI读写W25Q64)
  • 火山引擎携手地瓜机器人,加速大模型在机器人场景规模落地
  • Android 11(API 级别 30)及以上版本中,将Bitmap保存到设备上
  • 数模原理精解【12】
  • Centos 7.9 安装 Python3.7.9
  • Python 数学建模——Fitter 拟合数据样本的分布
  • 常用游戏运行库下载
  • C++ vector的使用
  • IO模型---BIO、NIO、IO多路复用、AIO详解
  • 【CTF Web】BUUCTF BUU UPLOAD COURSE 1 Writeup(文件上传+PHP+文件包含漏洞)
  • 高等数学 2.5 函数的微分
  • Qt 中openMp 配置
  • QT操作数据库
  • Vue3+Element Plus:使用el-dialog,对话框可拖动,且对话框弹出时仍然能够在背景页(对话框外部的页面部分)上进行滚动以及输入框输入信息
  • (c++)函数的分文件编写
  • [创业之路-146] :如何理解:复杂的事情简单化,简单的事情标准化,标准的事情流程化,流程的事情数字化,数字化的事情自动化,自动化的事情智能化
  • Chisel简明教程
  • 【大模型实战篇】高质量数据过滤及一种BoostedBaggingFilter处理方法的介绍
  • JDK的选择安装和下载
  • 软考 -- 软件设计师 -- 二轮复习(3) -- 数据结构(持续更新)
  • 24.Redis实现全局唯一ID
  • 电脑信息安全:挑战与应对策略
  • PAT甲级-1055 The World‘s Richest
  • 【C++学习入门】6.左值右值
  • 软件测试方法及其应用概述
  • JZ2440开发板——S3C2440的时钟体系
  • RFID射频模块(MFRC522 STM32)