学习笔记-SSM之Mybatis3(动态sql)

https://mybatis.org/mybatis-3/zh/dynamic-sql.html

OGNL表达式介绍

[https://www.cnblogs.com/renchunxiao/p/3423299.html]
在这里插入图片描述

在这里插入图片描述

动态 SQL简介

动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。

使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。

如果你之前用过 JSTL 或任何基于类 XML 语言的文本处理器,你对动态 SQL 元素可能会感觉似曾相识。在 MyBatis 之前的版本中,需要花时间了解大量的元素。借助功能强大的基于 OGNL 的表达式,MyBatis 3 替换了之前的大部分元素,大大精简了元素种类,现在要学习的元素种类比原来的一半还要少。
在这里插入图片描述

查询的时候如果某些条件没带,可能sql拼接会有问题

1、给where后面加上1=1,以后的条件都and xxx。
2、mybatis使用where标签来将所有的查询条件包括在内。mybatis就会将where标签中拼装的sq1,多出来的and或者or去掉,//where只会去掉第一个多出来的and或者or。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

if

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

choose (when[封装查询条件], otherwise[封装修改条件])分支选择;带了break的swtich-case

如果带了id就用id查,如果带了lastName就用lastName查;== 只会进入其中一个==,假如满足多个条件,只会查询最靠前的条件

when

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

trim (where, set)【自定义字符串的截取规则】

** 后面多出的and或者or ,where标签不能解决
prefix="":前缀:trim标签体中是整个字符串 拼串后的结果。
prefix给拼串后的整个字符串加一个前缀
prefixOverrides="":
前经覆盖:去掉整个字符串前面多余的字符
suffix="":后缀
suffix给拼串后的整个字符串加一个后缀
suffixoverrides=""
后缀覆盖:去掉整个字符串后面多余的字符 **

where

trim:where

在这里插入图片描述

where标签的使用

在这里插入图片描述

set

set标签的使用

在这里插入图片描述

Trim:更新

在这里插入图片描述
在这里插入图片描述

foreach

**
collection:指定要遍历的集合:
List类型的参数会特殊处理封装在map中,map的key就叫list
item.将当前遍历出的元素赋值给指定的变量
separator:每个元素之间的分隔符
open:遍历出所有结果拼接一个开始的字符
close:遍历出所有结果拼接一个结束的字符
index:索引。遍历1ist的时候是index就是索引,item就是当前值
遍历map的时候index表示的就是map的key,item就是map的值
#{变量名}就能取出变量的值也就是当前遍历出的元素

**

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

批量保存

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

bind,传入参数时不带“%”,在sql语句里自动拼接,即给拼好的sql语句起一个别名,后面用别名。

<!–bind:可以将OGNL表达式的值绑定到一个变量中,方便后来引用这个变量的值–>
<!––>
在这里插入图片描述

或者用${},直接拼接%,但是不安全

在这里插入图片描述

两个内置参数

在这里插入图片描述

两个数据库(mysql,oracle)都可以查询

在这里插入图片描述

在这里插入图片描述

如果lastnaem=null,则where last_name=null语句不会拼接在sql语句后面,会查询全部信息在这里插入图片描述

或者
在这里插入图片描述在这里插入图片描述

没有用if标签的结果:lasname=null,就查不到结果

在这里插入图片描述
在这里插入图片描述

sql标签:抽取可重用的sq1片段。方便后面引用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值