news 2026/8/21 5:15:10

javaWeb从入门到进阶(MyBatis拓展)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
javaWeb从入门到进阶(MyBatis拓展)

XML映射文件

我们要先知道xml是什么:是一种标记语言,就像HTML的"表哥"。

XML映射文件:XML映射文件是连接Java对象和数据库表的"翻译官"

Q:XML映射文件是干嘛的?
A:它是MyBatis的"大脑",告诉MyBatis:

  1. 执行什么SQL(查询、插入、更新、删除)

  2. 如何传参数(Java对象属性 → SQL参数)

  3. 如何转结果(数据库记录 → Java对象)

  4. 何时变化SQL(根据条件动态调整)

没有它,MyBatis就不知道该如何操作数据库!它是连接Java世界和SQL世界的桥梁。

规范
XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)XML映射文件的namespace属性为Mapper接口全限定名一致。
XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。

操作:

首先在resource文件夹下创建包名与mapper接口一样的文件夹,用/分隔,然后在其中创建xml类,并在其中配置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="这里写你的Mapper接口全限定名"> <!-- 你的SQL语句写在这里 --> </mapper>

在xml文件中配置sql语句

Mapper接口

采用注解的方式sql语句是配置在Mapper接口中的,而我们采用xml文件方式是配置在xml类中的。

MyBatis找到并执行SQL的步骤:

  1. 配置阶段:MyBatis读取配置文件,注册Mapper

  2. 运行时:通过接口全名找到对应XML文件

  3. 方法调用:通过方法名找到XML中的SQL标签

  4. 执行SQL:绑定参数,执行预编译SQL

  5. 结果映射:将结果集映射为Java对象

可以安装MybatisX来提高效率。

使用Mybatis的注解,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句。
官方说明:https://mybatis.net.cn/getting-started.html

动态SQL


随着用户的输入或外部条件的变化而变化的SQL语句,我们称为动态SQL。

<if>:用于判断条件是否成立。使用test属性进行条件判断,如果条件为true,则拼接SQL。

如果多余and 和where时,我们采取两个<where>进行包裹,他会自动删除多余部分,方便。

案例分析


完善更新员工功能,修改为动态更新员工数据信息
需求
动态更新员工信息,如果更新时传递有值,则更新;如果更新时没有传递值,则不更新。
解决方案
动态SQL

<set>:动态地在行首插入SET关键字,并会删掉额外的逗号。(用在update语句中)

foreach

collection:遍历的集合

item:遍历出来的元素

separator:分隔符

open:遍历开始前拼接的SQL片段

close:遍历结束后拼接的SQL片段

在mapper.xml中定义接口方法。

在测试类中调用

<sql:定义可重用的SQL片段。
<include>:通过属性refid,指定包含的sql片段。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/27 22:25:59

小白也能懂的MGeo教程:快速上手地址相似度计算

小白也能懂的MGeo教程&#xff1a;快速上手地址相似度计算 1. 开篇&#xff1a;你是不是也遇到过这些地址“认不出自己”的尴尬&#xff1f; 你有没有试过在系统里搜索“北京朝阳望京SOHO”&#xff0c;结果没找到&#xff0c;但换一个写法——“北京市朝阳区望京SOHO塔1”&a…

作者头像 李华
网站建设 2026/8/16 8:44:25

Z-Image-Turbo真实体验:16G显存流畅运行无压力

Z-Image-Turbo真实体验&#xff1a;16G显存流畅运行无压力 你是否也经历过这样的时刻——在本地部署一个文生图模型&#xff0c;刚输入pip install&#xff0c;终端就开始滚动下载几百MB甚至上GB的依赖&#xff1b;等了二十分钟&#xff0c;终于装完&#xff0c;结果一运行就报…

作者头像 李华
网站建设 2026/8/11 11:53:57

rs485modbus协议源代码解析:小白指南从结构到函数

以下是对您提供的博文《RS485 Modbus协议源代码解析&#xff1a;嵌入式通信底层逻辑的工程化实现》进行 深度润色与结构重构后的终稿 。本次优化严格遵循您的全部要求&#xff1a; ✅ 彻底去除AI痕迹&#xff0c;语言自然、专业、有“人味”——像一位十年工控开发老兵在茶水…

作者头像 李华
网站建设 2026/8/1 0:46:49

开源广告管理系统:Revive Adserver全方位广告运营解决方案

开源广告管理系统&#xff1a;Revive Adserver全方位广告运营解决方案 【免费下载链接】revive-adserver The worlds most popular free, open source ad serving system. You can download the latest release at: 项目地址: https://gitcode.com/gh_mirrors/re/revive-adse…

作者头像 李华
网站建设 2026/8/19 16:56:18

gsplat完全指南:从入门到实践的创新路径

gsplat完全指南&#xff1a;从入门到实践的创新路径 【免费下载链接】gsplat CUDA accelerated rasterization of gaussian splatting 项目地址: https://gitcode.com/GitHub_Trending/gs/gsplat gsplat是一个基于CUDA加速的开源3D高斯泼溅渲染库&#xff0c;能够实现实…

作者头像 李华
网站建设 2026/8/8 5:26:53

GLM-4-9B-Chat-1M行业应用:法律文书智能问答系统搭建

GLM-4-9B-Chat-1M行业应用&#xff1a;法律文书智能问答系统搭建 1. 为什么法律场景特别需要“能读完一整本卷宗”的AI&#xff1f; 你有没有试过处理一份300页的民事起诉状证据目录司法鉴定报告庭审笔录&#xff1f;不是摘要&#xff0c;是全文&#xff1b;不是跳读&#xf…

作者头像 李华