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片段。

相关推荐
云烟成雨TD几秒前
Spring AI Alibaba 1.x 系列【79】图执行生命周期的可观测性基础设施
java·人工智能·spring
霸道流氓气质4 分钟前
Java 单元测试生成大量 Excel 测试数据实战指南
java·单元测试·excel
io无心9 分钟前
基于Image 2的多配件商品图生成技术实现(已开源)
java·image2
逢君学术论文AI写作12 分钟前
Java第22课:Servlet获取请求参数+POST请求+表单交互
java·servlet·ai写作
神明不懂浪漫12 分钟前
【第二章】Java中的数据类型,运算符与程序逻辑控制
java·开发语言·经验分享·笔记
小马爱打代码14 分钟前
Java 开发:过滤器(Filter)与拦截器(Interceptor)深度解析 + CORS 跨域完整解决方案
java
我登哥MVP16 分钟前
SpringCloud 核心组件解析:服务熔断和降级
java·spring boot·后端·spring·spring cloud·java-ee·maven
霸道流氓气质25 分钟前
Spring AI Alibaba Graph 全解析:从入门到精通
java·人工智能·spring
摇滚侠26 分钟前
SpringMVC 入门到实战 异常处理 83-85
java·后端·spring·maven·intellij-idea
Solis程序员33 分钟前
长会话状态治理(上):问题分析、存储分层与恢复机制
java