认识MyBatis 之 MyBatis的动态SQL


前言

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


文章目录

本文开始

MyBatis - 动态 SQL

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

if标签

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

trim标签

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

示例:

java 复制代码
<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)

示例:

java 复制代码
 <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标签:修改时使用;
    -会自动去掉最后的后缀逗号,
java 复制代码
 <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: 每次遍历 的 分隔符;
java 复制代码
 <delete id="delByIds">
        delete from userinfo
        where id in
        <foreach collection="lists" open="(" close=")" item="id" separator=",">
            #{id}
        </foreach>
    </delete>

总结

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

相关推荐
无限进步_1 分钟前
【C++&string】大数相乘算法详解:从字符串加法到乘法实现
java·开发语言·c++·git·算法·github·visual studio
海兰22 分钟前
使用 Spring AI 打造企业级 RAG 知识库第二部分:AI 实战
java·人工智能·spring
Yushan Bai31 分钟前
ORACLE数据库在进行DROP TABLE时失败报错ORA-00604问题的分析处理
数据库·oracle
難釋懷35 分钟前
缓存同步
spring·缓存·mybatis
77美式37 分钟前
Node + Express + MongoDB 后端部署全解析:新手零踩坑
数据库·mongodb·express
历程里程碑39 分钟前
二叉树---二叉树的中序遍历
java·大数据·开发语言·elasticsearch·链表·搜索引擎·lua
阿丰资源1 小时前
SpringBoot+MySQL+MyBatis-Plus+Vue前后端分离仓库管理系统 (附资料)
spring boot·mysql·mybatis
小信丶1 小时前
Spring Cloud Stream EnableBinding注解详解:定义、应用场景与示例代码
java·spring boot·后端·spring
s1mple“”1 小时前
互联网大厂Java面试实录:谢飞机的AIGC求职之旅 - JVM并发编程到Spring Cloud微服务
spring boot·aigc·微服务架构·java面试·分布式系统·rag技术·redis数据库
无限进步_1 小时前
【C++】验证回文字符串:高效算法详解与优化
java·开发语言·c++·git·算法·github·visual studio