侧边栏壁纸
博主头像
清如许博主等级

努力成长为一颗大树,一半洒落阴凉,一半沐浴阳光,非常沉默非常骄傲,从不依靠从不寻找

  • 累计撰写 58 篇文章
  • 累计创建 36 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

Mybatis中$ {} 和 # {}的区别,动态SQL之if、where、set、trim、foreach标签的使用.md

清如许
2020-04-25 / 0 评论 / 0 点赞 / 161 阅读 / 521 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-21,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

## 一.Mapper文件的补充细节

a) Xml的特殊字符
在mapper文件中,小于号用& lt;代替, 大于号用 & gt;代替

i.	<   &lt;  
ii.	>  &gt; 

b) $ {} 和 # {}的区别
i. 使用上,$ {}要获取的参数值,对应的参数必须使用Param注解
ii. 底层上,
${}使用字符串拼接
#{}使用?占位符

  1. 字符串拼接,可以拼接表名 列名 sql关键字
  2. ?占位符,只能绑定数据,但可以避免sql注入攻击

二.动态SQL

什么是动态SQL?就是能够根据不同的条件,产生不同 的SQL语句。

比如我们常见的多条件搜索框,可以根据姓名、性别、年龄、工资范围等按照一定的条件进行搜素,
但如果我只输入姓名搜素呢,或者按照姓名+年龄进行搜素呢,这样排列组合情况就太多了,我们不可能一个条件去写一个SQL的,
所以就需要我们根据用户输入的条件来动态的生成一条SQL语句。

Mapper文件中动态SQL常用的几个标签
< if> 作用:
满足条件时执行sql,不满足则不执行

< where> 作用:

  1. 会自动删除if动态sql产生的多余的and or前缀
  2. 会在if动态sql语句前添加where关键字

如下SQL语句所示:
在这里插入图片描述
< set>作用:
1.会自动if动态sql产生的多余的逗号后缀
2.会在if动态sql语句前添加set关键字

在这里插入图片描述
< trim>作用:
可以自定义前缀和后缀:

在这里插入图片描述
< foreach> 循环遍历,
常用来做批量删除的时候用

如下图所示:
collection:相当于集合名,
item表示集合中的一个元素,
open是循环之前要加的东西,
close是循环结束的时候要加的东西,
separator:元素间使用什么分隔。
在这里插入图片描述

0

评论区