• 动态SQL(if、where、trim、choose when otherwise、foreach、sql标签等)


    动态SQL

    简介:

    MyBatis框架的动态SQL技术是一种根据特定条件动态拼接SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的痛点问题

    1.若没有传输请求参数,而是服务器中却获取了参数则获取的都是null

    2.若表没有输入数据,则提交后是空字符串

    3.判断是否设置了条件;若接收的数据等于null或空字符串则没有设置条件

    if标签:

    if标签可通过test属性的表达式进行判断,若表达式的结果为true,则标签中的内容会执行,反之标签中的内容不会执行

    新建一个工程添加Emp类,和工具类文件、核心配置文件等等

    同时添加依赖以及接口文件和映射文件

     在DynamicSQLMapper的接口文件中声明条件查询员工信息的方法声明

    在映射文件中添加sql语句,并进行条件判断 

     在测试类中添加测试方法

     测试结果如下所示:

     where标签:

    where和if一般结合使用:

    1.若where标签中的if条件都不满足,则where标签没有任何功能,即不会添加where关键字

    2.若where标签中的if条件满足,则where标签会自动添加where关键字,并将条件最前方多余的and去掉

    3.添加一个恒成立的条件,使得可以跟后面的条件拼接即使后面的条件不成立也不影响查询的报错

    第一种方法:

    当条件后面的一个为null或空字符串时,则会报错,可以在where后添加1=1恒成立来解决

    接口中使用之前的根据条件查询员工信息的方法声明

     在映射文件中修改(添加1=1的恒成立)sql语句

     测试方法

    测试结果 

     第二种方法:

    在接口中添加方法声明

    在映射文件中添加sql语句 

     

    测试方法

     测试结果

     trim标签:

    trim用于去掉或添加标签中的内容,

    常用属性:

    prefix:在trim标签中的内容的前面添加某些内容

    prefixOverrides:在trim标签中的内容的前面去掉某些内容

    suffix:在trim标签红的内容的后面添加某些内容

    suffixOverrides:在trim标签中的内容的后面去掉某些内容

    在接口文件中添加方法声明:

     在映射文件中添加sql语句

     

     测试方法

    测试结果 

     choose、when、otherwise标签:

     choose、when、otherwise相当于 if...else if ... else

    在接口文件中添加choose查询员工信息的方法声明

     在映射文件中添加sql语句

    在测试类中添加测试方法 

     测试结果如下

     foreach(批量添加):

    在接口文件中国添加批量添加员工信息的方法声明

    在映射文件中添加批量添加员工信息的sql语句 

     在测试类中添加测试方法

     测试结果如下所示:

    在数据库中数据刷新为如下所示: 

    foreach标签(批量删除):

    通过数组实现批量删除的功能

    在接口文件中添加使用数组来实现批量删除的功能方法声明

    在映射文件中添加sql语句 (有三种方法添加sql语句)

     第一种方式添加sql语句:

    第二种方式添加sql语句: 

    第三种方式添加sql语句:

     在测试类中添加测试方法

     

    测试结果如下所示: 

     SQL标签:

    sql片段,可以记录一段公共的sql片段,在使用的地方通过include标签进行引入        

    使用sql来代替 *  

  • 相关阅读:
    【CTO变形记】有序定无序—为什么越努力,越无力
    牛客错题笔记
    企业级win10电脑下同时存在Python3.11.7Python3.6.6,其中Python3.6.6是后装的【过程与踩坑复盘】
    9、Python字符串操作:字符串基本操作、字符串方法、格式化
    【TypeScript】的类型缩小
    Flask框架学习:蓝图的使用
    Java IO知识体系详解
    你是否正确地编写了 Git 提交信息?
    简单几步让你的远程桌面更安全
    java计算机毕业设计ssm信息科技知识交流学习平台
  • 原文地址:https://blog.csdn.net/weixin_46065214/article/details/126901361