一.Mapper文件的补充细节
a) Xml的特殊字符
在mapper文件中,小于号用& lt;代替, 大于号用 & gt;代替
i. < < ii. > >
b) $ {} 和 # {}的区别
i. 使用上,$ {}要获取的参数值,对应的参数必须使用Param注解
ii. 底层上,
${}使用字符串拼接
#{}使用?占位符
- 字符串拼接,可以拼接表名 列名 sql关键字
- ?占位符,只能绑定数据,但可以避免sql注入攻击
二.动态SQL
什么是动态SQL?就是能够根据不同的条件,产生不同 的SQL语句。
比如我们常见的多条件搜索框,可以根据姓名、性别、年龄、工资范围等按照一定的条件进行搜素,
但如果我只输入姓名搜素呢,或者按照姓名+年龄进行搜素呢,这样排列组合情况就太多了,我们不可能一个条件去写一个SQL的,
所以就需要我们根据用户输入的条件来动态的生成一条SQL语句。
Mapper文件中动态SQL常用的几个标签
< if> 作用:
满足条件时执行sql,不满足则不执行
< where> 作用:
- 会自动删除if动态sql产生的多余的and or前缀
- 会在if动态sql语句前添加where关键字
如下SQL语句所示:
< set>作用:
1.会自动if动态sql产生的多余的逗号后缀
2.会在if动态sql语句前添加set关键字
< trim>作用:
可以自定义前缀和后缀:
< foreach> 循环遍历,
常用来做批量删除的时候用
如下图所示:
collection:相当于集合名,
item表示集合中的一个元素,
open是循环之前要加的东西,
close是循环结束的时候要加的东西,
separator:元素间使用什么分隔。