1. 动态SQL
1.1 <if> 标签
注册分为两种字段: 必填字段和非必填字段,那如果在添加用户的时候有不确定的字段传入,程序改如何实现?
这个时候就需要使用动态标签来判断了,比如添加性别 gender 为非必填字段,
1) 方法定义
2) 方法实现
3) 运行
有 gender 的
运行结果
没有gender
运行结果
已经实现 动态SQL
1.2 <trim>标签
之前的插入用户功能,只是有一个 gender 字段是选填项,如果有多个字段,一般考虑标签结合标签,对多个字段都采取动态生成的方式。
标签中有如下属性:
- prefix: 表示整个语句块,以prefix的值作为前缀
- suffix: 表示整个语句块,以suffix的值作为后缀
- prefixOverrides: 表示整个语句块要去除掉的前缀
- suffixOverrides: 表示整个语句块要去除掉的后缀
调整后的语句为:
1.3 <where>标签
看下面这个场景,系统会根据我们的筛选条件,动态组装where 条件
没优化之前的代码
添加 where 标签优化后的代码
1.4 <set> 标签
需求: 根据传⼊的⽤户对象属性来更新⽤户数据,可以使用标签来指定动态内容.
接口定义: 根据传⼊的⽤户id属性,修改其他不为null的属性
代码:
利用 set 标签优化后
1.5 <foreach> 标签
对集合进行遍历时可以使用该标签. 标签有如下属性:
- collection: 绑定方法参数中的集合,如 List, Set, Map 或数组对象
- item: 遍历时的每一个对象
- open: 语句块中开头的字符串
- close: 语句块中结束的字符串
- separator: 每次遍历之间间隔的字符串
1.6 <include> 标签
在xml映射文件配置SQL,有时会存在很多重复的片段, 此时就会存在很多冗余的代码.如图
我们可以对重复的代码片段进行抽取,将其通过 <sql> 标签封装到一个SQL片段,然后通过 <include> 标签进行引用
- <sql> : 定义可重复使用的SQL片段
- <include> : 通过属性refid, 指定 定义好的SQL 片段