动态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来代替 *

动态SQL(if、where、trim、choose when otherwise、foreach、sql标签等)相关推荐

  1. 动态SQL之choose、when、otherwise标签

    动态SQL之choose.when.otherwise标签 choose.when.otherwise chose:父标签 when:相当于if...else if,只要有一个条件成立,其它的都不判断 ...

  2. 动态网页(JSP 文件)如何连接数据库(SQL Server)--看这里

    动态网页(JSP)连接数据库文件(SQL SERVER) 举例演示,请到百度网盘下载例文件,如果要是有文件可以不需要此文件 两种方法下载 一:https://download.csdn.net/dow ...

  3. SQL 中的 TRIM 函数

    SQL 中的 TRIM 函数是用来移除掉一个字串中的字头或字尾.最常见的用途是移除字首或字尾的空白.这个函数在不同的资料库中有不同的名称: MySQL: TRIM( ), RTRIM( ), LTRI ...

  4. sql中的trim()以及translate()函数

    oracle 函数 介绍一下sql中的trim()以及translate()函数 首先说一下trim(),trim()和我们接触的编程语言一样也是用来去掉前后空格的,LTRIM(),RTRIM(),T ...

  5. 动态他Transact-SQL语句处理中的常见问题演示.sql

    --1.数据类型转换的问题 DECLARE @value int SET @value=100 DECLARE @sql varchar(8000) SET @sql='SELECT * FROM t ...

  6. [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)...

    [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) 原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之 ...

  7. MyBatis choose、when和otherwise标签简介说明

    转自: MyBatis choose.when和otherwise标签简介说明 MyBatis 中动态语句 choose-when-otherwise其功能: 同Java中的switch-case-d ...

  8. ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)

    [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日之功) 继上四篇:ORACLE PL/SQL编程之八:把触发器说透                ORAC ...

  9. [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)

    [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日之功) 继上四篇:ORACLE PL/SQL编程之八:把触发器说透                ORAC ...

  10. java执行sql文件_面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他

    初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...

最新文章

  1. 一举拿下高可用与分布式协调系统设计!
  2. windows的键盘输入重定向
  3. sed原理的一些感悟
  4. 对集合变量定义赋值_SpringBoot配置加载原理(自定义加载配置)
  5. [转载] Java实现归并排序(超详细,新手请进)
  6. python两个字典合并、相同key值保留_Python两个字典key相同的值组成新字典?
  7. 17110 Divisible(basic)
  8. 推荐模型之:跨会话信息感知的推荐模型探索与实践
  9. python类方法_Python类方法
  10. [Reference][Castle AR] 1. Starter
  11. JAVA集合系列(1):集合的整体框架
  12. Ubuntu好用的截图工具
  13. The COMMIT TRANSACTION request has no corresponding BEGIN
  14. CSDN日报180605——《认知升级是令我们变得优秀的重要基石》
  15. 记一次给笔记本安装固态硬盘
  16. 高数_第6章无穷级数
  17. PHP点歌插件,此刻直播助手 弹幕点歌插件使用教程
  18. verilog 笔试题
  19. java mavlink_java – 使用消息更改速度到Mavlink
  20. 求n + nn + nnn + nnnn + .... = 用C语言

热门文章

  1. springboot实现敏感字段加密存储,解密显示
  2. doraemon的python CBV和FBV、视图装饰器
  3. 防火墙开放了端口,但无法talent到端口
  4. java 进程迁移_将java进程转移到“解剖台”之前,法医都干了什么?
  5. Vue中使用turf.js
  6. csdn请勿使用默认标题是什么意思
  7. 苹果新品发布会:几张图片告诉你苹果发布会新品亮点
  8. 2022年唯品会双11红包攻略:超级红包不停歇!
  9. 滴滴出行大数据数仓实战
  10. 基于HTML5canvars的小游戏,利用HTML5实现Canvas激流勇进小游戏代码