九 . 动态sql-if

2019-09-29  本文已影响0人  任未然

一、说明

if元素 是简单的条件判断逻辑,满足指定条件时追加 if元素内的SQL,类似于Java 中的 if语句

if 标签是我们最常使用的。 在查询、删除、更新的时候很可能会使用到。 必须结合 test 属性联合使用

二、语法结构

<select ... >
SQL语句
<if test="条件表达式">
SQL语句2
</if>
</select>

三、栗子

接口

 /**
   * 根据用户名或者手机号查询
   */
public User  findUserByIf(@Param("name") String name, @Param("phone") String phone);

UserMapper.xml

<select id="findUserByIf" resultType="User">
  SELECT * FROM user WHERE 1=1
  <if test="name!=null and name!=''">
    AND name LIKE CONCAT(CONCAT('%', #{user.name}),'%')
  </if>
  <if test="phone !=null and phone !=''">
    AND phone=#{phone}
  </if>
</select>

问题

如果其中有一个条件不传,这个时候sql语句就变成下面这个样子 直接报错

SELECT * 
FROM  user         
WHERE   1=1  AND name LIKE '%admin%' AND phone=
上一篇 下一篇

猜你喜欢

热点阅读