Mybatis:基础知识5-动态sql
动态sql(重点)
mybatis重点是对sql的灵活解析和处理。
需求
将自定义查询条件查询用户列表和查询用户列表总记录数改为动态sql
if和where
sql片段
通过sql片段可以将通用的sql语句抽取出来,单独定义,在其它的statement中可以引用sql片段。
通用的sql语句,常用:where条件、查询列
sql片段的定义
引用sql片段
foreach
在statement通过foreach遍历parameterType中的集合类型。
需求:
根据多个用户id查询用户信息。
在userQueryvo中定义list<Integer> ids存储多个id
修改where语句
使用foreach遍历list:
测试代码
动态 SQL 总结
在使用动态 SQL 语句的时候,咱们需要多注意以下几点:
- 通过 if 标签来判断字段是否为空,如果为空,则默认不参与到 SQL 语句中,并且可以自动省略逗号;
- 通过 where 标签来输出条件完成判断,其可以自动省略多余的 and 和 逗号;
- 通过 set 标签来完成修改操作,当字段值为 null 时,其不参与到 SQL 语句中;
- 在 foreach 标签中,collection 属性表示传入的参数集合, item 表示每个元素变量的名字,open 表示开始字符,close 表示结束字符,separator 表示分隔符;
- 任何参数都可以封装到 Map 中,其以 key 来取值。