概述
Mybatis的动态sql包括以下几种元素:
元素 | 作用 | 备注 |
---|---|---|
if | 判断语句 | 单条件分支判断 |
choose(when,otherwise) | 相当于java中的switch和case语句 | 多条件分支判断 |
trim(where,set) | 辅助元素,用于处理特定的sql拼装问题,比如去掉多余的and、or等。 | 用于处理sql拼装的问题 |
foreach | 循环语句 | 在sql的in语句中常用 |
动态SQL实际使用的元素并不多,但是它们带来了灵活性,在减少许多工作量的同时,很大程度上提高了程序的可读性和可维护性。
if
if元素是最常用的判断语句,相当于Java中的if语句,它常常与test属性联合使用。
<select id="find" parameterType="string" resultType="user" >
select id, user_name, note
from user
where 1=1
<if test="name != null and name !='' ">
and user_name like concat('%', #{name}, '%')
</if>
</select>
choose、when和otherwise元素
有这样一个场景:
1.如果编号不为空,则只用编号作为条件查询。
2.如果编号为空,则名称不为空,则用名称作为条件进行模糊查询。
3.如果编号和名称都为空,则要求备注不为空。
<select id="find2" parameterType="role" resultType="role">
select id, role_name, note
from role
where 1=1
<choose