美文网首页
16、mybatis-动态sql-if

16、mybatis-动态sql-if

作者: 唯老 | 来源:发表于2019-08-20 23:40 被阅读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=

相关文章

  • 16、mybatis-动态sql-if

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

  • 九 . 动态sql-if

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

  • Mybatis-动态SQL

    概述ifchoose when otherwisetrim where setforeachtest元素 欢迎访问...

  • mybatis-动态sql

    动态sql,减少了我们的sql标签的书写,简化我们业务层的开发1.where if标签当我们发送name时就会根据...

  • MyBatis-动态SQL

    MyBatis动态SQL元素 1. 满足条件就执行对应的sql语句 小提示: 问:为什么要用where...

  • Mybatis-传入动态sql

    1. mybatis 传入sql 语句执行 实现: application.yml pom

  • MyBatis-动态SQL常用标签

    功能标签名称定义sql语句insertdeleteupdateselect配置java对象属性与查询结果集中列名对...

  • Web框架-Mybatis-动态SQL

    Java工程师知识树[https://www.jianshu.com/p/db77d19a25f6] / We...

  • 19、mybatis-动态sql-foreach

    一、概要 动态 SQL 的另外一个常用的操作需求是对一个集合进行遍历foreach可以遍历三种类型,List,ar...

  • 15、mybatis-映射文件-动态sql

    一、概要 传统的使用JDBC的方法,相信大家在组合复杂的的SQL语句的时候,需要去拼接,稍不注意哪怕少了个空格,都...

网友评论

      本文标题:16、mybatis-动态sql-if

      本文链接:https://www.haomeiwen.com/subject/qqpdsctx.html