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

认识MyBatis 之 MyBatis的动态SQL


前言

本篇介绍MyBatis里如何使用动态SQL,了解如何去简单使用动态标签;如有错误,请在评论区指正,让我们一起交流,共同进步!


文章目录

  • 前言
  • MyBatis - 动态 SQL
    • if标签
    • trim标签
    • where标签
    • update + set 标签
    • delete + foreach 标签
  • 总结

本文开始

MyBatis - 动态 SQL

使用动态SQL的好处:根据不同的条件拼接 SQL 语句,提高了SQL的灵活性;

if标签

  • if标签:判断时使用,满足test中的判断,执行if条件
    格式:< if test=“xxx != null”> < /if >
    -写在.xml文件中
    -test中的是类中属性的值

trim标签

  • trim标签:判断时使用,去除后缀 与 if标签配合使用
    格式:
    属性:prefix: 这个语句前面加前缀,例如 左括号(
    suffix: 这个语句前面加后缀,例如 右括号(
    suffixOverrides:去掉整个语句后缀,例如 末尾的逗号 ,

示例:

<insert id="add4">insert into userinfo<trim prefix="(" suffix=")" suffixOverrides=","><if test="username != null">username,</if><if test="password">password,</if></trim>values<trim prefix="(" suffix=")" suffixOverrides=","><if test="username != null">#{username},</if><if test="password != null">#{password},</if></trim></insert>

where标签

  • where标签:查询时使用,如果有添加条件,就生成where语句;没有就不添加条件,不会生成where语句;
    -可以去掉前缀and (如下示例,在只有第二个条件时,where会自动去掉and)

示例:

 <select id="testWhere" resultType="com.example.demo.model.Userinfo">select * from userinfo <where><if test="id > 0">id=#{id}</if><if test="username != null">and username=#{username}</if></where></select>

update + set 标签

  • update + set标签:修改时使用;
    -会自动去掉最后的后缀逗号,
 <update id="update">update userinfo<set><if test="username != null">username=#{username},</if><if test="password != null">password=#{password}</if></set>where id=#{id}</update>

delete + foreach 标签

  • delete + foreach标签:删除时使用,删除多个就需要遍历删除,这就使用了foreach;
    属性:collection: 为传递过来的集合名称;
    open: 语句前缀;
    close: 语句后缀;
    item: 遍历的每个对象的名称;
    separator: 每次遍历 的 分隔符;
 <delete id="delByIds">delete from userinfowhere id in<foreach collection="lists" open="(" close=")" item="id" separator=",">#{id}</foreach></delete>

总结

✨✨✨各位读友,本篇分享到内容如果对你有帮助给个👍赞鼓励一下吧!!
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

相关文章:

认识MyBatis 之 MyBatis的动态SQL

前言 本篇介绍MyBatis里如何使用动态SQL&#xff0c;了解如何去简单使用动态标签&#xff1b;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言MyBatis - 动态 SQLif标签trim标签where标签update set 标签delet…...

【项目 计网2】4.4网络模型 4.5协议 4.6网络通信的过程

文章目录 4.4网络模型OSI七层参考模型TCP/IP四层模型&#xff08;常用&#xff09;简介四层介绍 4.5协议简介常见协议UDP协议TCP协议IP协议以太网帧协议&#xff08;MAC地址封装&#xff09;ARP协议&#xff08;IP->MAC&#xff09; 4.6网络通信的过程封装分用 4.4网络模型 …...

redis入门3-在java中操作redis

Redis的java客户端 Jedis、Lettuce、Redisson、以及spring提供的spring data redis Jedis操作redis //添加依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.8.0</version> </dep…...

网络安全预警分类流程

网络安全预警指南 随着信息技术的广泛应用与快速发展&#xff0c;传统业务与信息系统的融合程度不断加深&#xff0c;网络安全对国家政治、经济、文化、公共服务活动的影响进一步增大。网络安全形势日趋复杂&#xff0c;安全威胁不断变化&#xff0c;利用网络漏洞、恶意程序从…...

SpringBoot复习:(20)如何把bean手动注册到容器?

可以通过实现BeanDefinitionRegistryPostProcessor接口&#xff0c;它的父接口是BeanFactoryPostProcessor. 步骤&#xff1a; 一、自定义一个组件类&#xff1a; package com.example.demo.service;public class MusicService {public MusicService() {System.out.println(&q…...

VLT:Vision-Language Transformer用于引用的视觉语言转换和查询生成分割

摘要 在这项工作中&#xff0c;我们解决了引用分割的挑战性任务。引用分割中的查询表达式通常通过描述目标对象与其他对象的关系来表示目标对象。因此&#xff0c;为了在图像中的所有实例中找到目标实例&#xff0c;模型必须对整个图像有一个整体的理解。为了实现这一点&#…...

【开源项目--稻草】Day04

【开源项目--稻草】Day04 1. 续 VUE1.1 完善VUEAJAX完成注册功能 Spring验证框架什么是Spring验证框架使用Spring-Validation 稻草问答-学生首页显示首页制作首页的流程开发标签列表标签列表显示原理 从业务逻辑层开始编写控制层代码开发问题列表开发业务逻辑层开发页面和JS代码…...

【数模】奇异值分解SVD和图形处理

介绍奇异值分解在图形压缩中的运用&#xff0c;并将简单介绍下Matlab对于图形和视频的处理 一、奇异值分解介绍 1.1 基本概念 奇异值分解(Singular Value Decomposition&#xff0c;以下简称SVD)是线性代数中一种重要的矩阵分解&#xff1a; U和V都是正交矩阵∑是奇异值矩阵&…...

mongodb-win32-x86_64-2008plus-ssl-3.6.23-signed.msi

Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Administrator>cd C:\MongoDB\Server\3.6\binC:\MongoDB\Server\3.6\bin> C:\MongoDB\Server\3.6\bin> C:\MongoDB\Server\3.6\bin>mongod --dbpath C:\Mongo…...

华为Euler系统忘记密码之密码重置

目录 1. 进入GRUB引导菜单编辑模式2. 指定系统在启动时使用/bin/sh作为初始化进程3. 修改密码3.1 重新挂载文件系统&#xff0c;使文件系统可写3.2 修改密码3.3 重新标记文件的安全上下文 4. 开机输入修改的密码正常登录 1. 进入GRUB引导菜单编辑模式 启动openEuler&#xff0…...

Java-多线程-深入理解ConcurrentHashMap

目录 什么是ConcurrentHashMap&#xff1f;为什么有ConcurrentHashMap&#xff1f;和HashMap区别示例代码对比 JDK7和JDK8中ConcurrentHashMap整体架构的区别JDK7中JDK8中 ConcurrentHashMap的基本功能在性能方面的优化使用到的技术-CAS概念说明比较并交换的过程如下&#xff1…...

没有配置redis但是报错连接redis失败

问题 没有配置redis但是报错连接redis失败 检查maven配置是否引入了redis依赖&#xff08;可能是传递依赖&#xff0c;最好检查引进来的公共工程 解决办法 只需要在该工程application.yml文件中配置一下 redis就好&#xff0c;或者移除redis依赖 spring:redis:password: hos…...

剑指 Offer 04. 二维数组中的查找

力扣 在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右 非递减 的顺序排序&#xff0c;每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该整数。 示例: 现有矩阵 matrix…...

【工作中问题解决实践 九】Spring中事务传播的问题排查

最近在工作中遇到了两个关于事务操作的问题&#xff0c;顺便就着这两个问题又回顾了一遍Spring的事务相关的操作&#xff0c;想着一次性把这个问题研究明白了&#xff0c;后续使用事务的时候也能踏实点&#xff0c;让事务发挥真实的作用 什么是事务&#xff1f;什么是事务管理…...

【导出Word】如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档(只含文本内容的模板)

这篇文章&#xff0c;主要介绍如何使用JavaFreemarker模板引擎&#xff0c;根据XML模板文件生成Word文档。 目录 一、导出Word文档 1.1、基础知识 1.2、制作模板文件 1.3、代码实现 &#xff08;1&#xff09;引入依赖 &#xff08;2&#xff09;创建Freemarker工具类 &…...

Devart dbForge Studio for MySQL Crack

Devart dbForge Studio for MySQL Crack dbForge Studio for MySQL是一个用于MySQL和MariaDB数据库开发、管理和管理的通用GUI工具。IDE允许您通过直观的界面创建和执行查询、开发和调试存储例程、自动化数据库对象管理、分析表数据。MySQL客户端提供了数据和模式比较和同步工具…...

C++、Java、JavaScript和python几个语句的对比介绍

C、Java、JavaScript和python几个语句的对比介绍 C、Java、JavaScript和python语言的for语句 C、Java和JavaScript的for语句的语法类似如下&#xff1a; for (初始条件; 循环条件; 循环后操作) { // 循环体代码 } 初始条件是在进入循环之前执行的语句&#xff0c;初始化循环…...

第20节 R语言医学分析:某保险医疗事故赔偿因素分析

文章目录 某保险医疗事故赔偿因素分析源码源文件下载某保险医疗事故赔偿因素分析 我们分析数据集“诉讼”的第一个方法是确定样本数量、变量类型、缩放/编码约定(如果有)用于验证数据清理。 接下来,数据集看起来很干净,没有缺失值,并且对于分类变量,将编码约定替换为实际…...

【雕爷学编程】MicroPython动手做(28)——物联网之Yeelight 4

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…...

解决K8S集群设置污点后,污点不生效,下发应用的问题

问题&#xff1a;在集群中部署了三个daemonset&#xff0c;一开始加了容忍Toleration&#xff0c;后边去掉Toleration后&#xff0c;还是一直往边缘节点上部署应用&#xff0c;非常离谱 解决&#xff1a;删掉Toleration后&#xff0c;需要把annotations一起删掉&#xff0c;因为…...

STM32CubeIDE实战指南:从代码编译到一键下载的完整流程解析

1. STM32CubeIDE开发环境概述 对于刚接触STM32开发的工程师来说&#xff0c;选择一款合适的集成开发环境(IDE)至关重要。STM32CubeIDE是ST官方推出的免费开发工具&#xff0c;它集成了代码编辑、编译、调试和下载功能于一体&#xff0c;特别适合新手快速上手。我在实际项目中使…...

3分钟掌握Seraphine:英雄联盟智能助手完全指南

3分钟掌握Seraphine&#xff1a;英雄联盟智能助手完全指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine Seraphine是一款基于英雄联盟官方LCU API开发的智能游戏助手&#xff0c;通过自动BP系统和实时战绩查…...

游戏技能工程化:用数据驱动与计算机视觉构建Apex Legends个人成长系统

1. 项目概述&#xff1a;从“Apex Growth”到“OpenClaw Skill”的爬升之路如果你是一名游戏开发者&#xff0c;尤其是对竞技类FPS&#xff08;第一人称射击&#xff09;游戏感兴趣&#xff0c;那么“Apex Legends”这个名字你一定不陌生。这款游戏以其快节奏、高机动性和深度的…...

基于意图与技能解耦的智能对话系统构建指南

1. 项目概述&#xff1a;一个意图与技能驱动的AI对话引擎最近在折腾AI应用开发&#xff0c;特别是对话型AI助手时&#xff0c;发现一个核心痛点&#xff1a;如何让AI不仅能理解用户说了什么&#xff08;意图识别&#xff09;&#xff0c;还能精准地调用相应的功能&#xff08;技…...

n8n-claw:在自动化工作流中实现零代码网页抓取

1. 项目概述与核心价值最近在折腾自动化工作流&#xff0c;发现了一个挺有意思的项目&#xff0c;叫freddy-schuetz/n8n-claw。乍一看名字&#xff0c;你可能会有点懵&#xff0c;“n8n”我知道&#xff0c;是那个开源的自动化工具&#xff0c;但这个“claw”是啥&#xff1f;爪…...

量子最优控制中的iLQR算法实践与优化

1. 量子最优控制基础与挑战量子最优控制&#xff08;Quantum Optimal Control, QOC&#xff09;是现代量子计算中的核心技术&#xff0c;其核心目标是通过精心设计的控制脉冲序列&#xff0c;实现对量子系统状态演化的精确操控。在超导量子计算体系中&#xff0c;这一技术尤为重…...

桌面CNC木质游戏手柄外壳制作:从Fusion 360设计到实战加工全流程

1. 项目概述&#xff1a;从数字模型到木质手柄的旅程如果你和我一样&#xff0c;既痴迷于复古游戏的怀旧情怀&#xff0c;又享受亲手将数字设计变为实体物件的成就感&#xff0c;那么这个项目绝对能点燃你的热情。我们这次要做的&#xff0c;不是一个简单的3D打印外壳&#xff…...

构建高质量代码数据池:从数据堆到模型营养基的进化之路

1. 项目概述&#xff1a;一个为代码生成模型量身定制的数据池最近在折腾大语言模型&#xff0c;特别是代码生成这块&#xff0c;发现一个挺有意思的现象&#xff1a;很多开发者手头有不错的代码数据集&#xff0c;但直接丢给模型训练&#xff0c;效果总是不尽如人意。要么是数据…...

学生综合素质评价系统设计实现【附程序】

✨ 长期致力于综合素质评价、AHP层次分析、BP神经网络、遗传算法研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;三层指标体系构建与AHP动态权重分配&…...

Windows Cleaner终极方案:5分钟告别C盘爆红,系统性能飙升200%

Windows Cleaner终极方案&#xff1a;5分钟告别C盘爆红&#xff0c;系统性能飙升200% 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为W…...