<!--4.1.1 在WHERE条件中使用if需求:实现一个用户管理高级查询功能,根据输入的条件去检索用户信息。这个功能还需要支持以下三种情况:当只有输入用户名时,需要根据用户名进行模糊查询;当只有输入邮箱时,根据邮箱进行完全匹配;当同时输入用户名与邮箱时用这两个条件去查询匹配的用户。<if>便签有一个必填的属性test,test的属性值是一个符合OGNL要求的判断表达式,表达式的结果可以是true或者false,初次之外所有的的非0值都为true,只有0为false。且有如下规则:1.判断条件property!=null或者property==null:适用于任何类型的字段,用于判断属性值是否为空2.判断条件property!=''或者property=='':仅适用于String类型的字段,用于判断是否为空字符串3.and和or:当有多个判断条件时,适用and或or进行连接,嵌套的判断可以适用小括号分组。--><!--不能满足需求的代码,标记下模糊匹配的写法--><select id="selectByUser" resultType="tk.mybatis.simple.model.SysUser">selectid,use_name userName,user_password userPassword,user_email userEmail,user_info userInfo,head_img headImg,create_time createTimefrom sys_userwhereuser_name like concat('%',#{userName},'%') anduer_email=#{userEmail}</select><!--改进后的代码--><select id="selectByUser" resultType="tk.mybatis.simple.model.SysUser">selectid,use_name userName,user_password userPassword,user_email userEmail,user_info userInfo,head_img headImg,create_time createTimefrom sys_userwhere1=1<if test="userName!=null and userName!=''">and user_name like concat('%',#{userName},'%')</if><if test="userEmail!=null and userEmail!=''">and user_email = #{userEmail}</if></select><!--4.1.3 在UPDATE更新列中使用if需求:只更新有变化的字段,需要注意,更新的时候不能将原来的值但没有发生变化的字段更新为空或null。--><!--需求实现的代码--><update id="updateByIdSelective">update sys_userset<if test="userName!=null and userName!=''">user_name=#{userName},</if><if test="userEmail!=null and userEmail!=''">user_email=#{userEmail},</if><if test="userInfo!=null and userInfo!=''">user_info=#{userInfo},</if><if test="headImg!=null">head_img=#{headImg},</if><if test="createTime!=null">create_time=#{createTime},</if>id=#{id}where id=#{id}</update><!--4.1.3 在INSERT动态插入列中使用if需求:在数据库中插入数据的时候,如果某一列的参数值不为空,就使用传入的值,如果传入的参数为空,就使用数据库中的默认值(通常是空),而不使用传入的空值。--><insert id="insert2" useGeneratedKeys="true" keyProperty="id">INSERT INTO sys_user(id,user_name,user_password,<if test="userEmail!=null and uerEmail!=''">user_email,</if>user_info,head_img,create_time)VALUES(#{id},#{userName},#{userPassword},<if test="userEmail!=null and uerEmail!=''">#{userEmail},</if>#{userInfo},#{headImg,jdbcType=BLOB},#{createTime,jdbcType=TIMESTAMP})</insert>

From《MyBatis从入门到精通》

转载于:https://www.cnblogs.com/junjie2019/p/10570215.html

MyBatis if标签的用法相关推荐

  1. mybatis choose标签的用法

    先上代码: <choose> <when test="BEGINTIME != null and BEGINTIME != '' and ENDTIME != null a ...

  2. 9.mybatis动态SQL标签的用法

    mybatis动态SQL标签的用法 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦 ...

  3. Maven当中resources标签的用法

    在开发当中,我们一般打包都是利用maven打包的,在项目当中我们经常会看见resources标签,可能很多人对这个标签并不是很理解,本篇文章主要详细记录resources标签的用法. 可能写的比较多, ...

  4. MySQL中choose标签的用法

    MySQL中标签的用法 先给大家来个SQL语句: choose (when,otherwize) ,相当于java 语言中的 switch ,与 jstl 中 的 choose 很类似. SELECT ...

  5. 关于mybatis中selectKey的用法

    在使用MyBatis插入数据进入数据库的时候会用到sequence序列来生成自增的id 这时可以使用selectKey就可以得到sequence的值,同时也会将值返回.不过对于不同的数据库有不同的操作 ...

  6. php中 datalist,html5 datalist标签的用法是什么?这里有datalist标签的用法实例

    本篇文章主要为大家讲述了关于html5 datalist标签的用法及html5 datalist标签的用法实例.本文说了两个常用的选项框的实例供大家选择观看,下面就让我们一起来看这篇文章吧 我们先来看 ...

  7. mybatis常用标签和动态查询

    这里是修真院后端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析后端知识/技能,本篇分享的是: [mybatis ...

  8. VTK:标签轮廓用法实战

    VTK:标签轮廓用法实战 程序输出 程序完整源代码 程序输出 程序完整源代码 #include <vtkActor.h> #include <vtkActor2D.h> #

  9. php中的ol标签,html5中ol标签的用法详解

    这篇文章主要介绍了详解HTML5中ol标签的用法,是HTML5入门学习中的基础知识,需要的朋友可以参考下 定义和用法 标签定义有序列表. HTML 4.01 与 HTML 5 之间的差异 在 HTML ...

最新文章

  1. python删除重复值所在的行数_python – 在last中删除具有重复值的行
  2. 为什么Redux需要reducer成为“纯函数”
  3. [小北De编程手记] : Lesson 01 玩转 xUnit.Net 之 概述
  4. 精心整理的NGINX面试题
  5. 使用HTML5仿制的QQ音乐PC版界面
  6. 线性回归——多重共线性
  7. Qt QML 模块化管理(三)—— qmldir的化繁为简
  8. 国外全能免费主页空间
  9. Exception | 优雅的输出Exception异常信息
  10. rgv动态调度MATLAB代码,RGV动态调度分析
  11. 饥荒模块显示检查工作室订阅服务器,饥荒工作室新作《欺诈之地》正式上架Steam商店...
  12. 在vscode中使用latex高效书写论文教程
  13. 用 SQL 分析不同用户群组留存率
  14. 一个参数 nls_date_language
  15. Win10 如何将FAT32格式磁盘不用格式化无损转化为NFTS格式
  16. Au入门系列之十:母带处理
  17. 数据结构:字符串 C++
  18. configure: error: libmpfr not found or uses a different ABI (including static vs shared)解决了
  19. 五、Scikit-learn的应用-为CHarityML寻找捐献者
  20. unittest.defaultTestLoader.discover实现在运行时运行用例

热门文章

  1. 浅显易懂 Makefile 入门 (03)— 目标文件搜索(VPATH 和 vpath 的区别和使用)、隐含规则
  2. c/c++ 如何输入带空格的字符串
  3. docred数据集情况笔记
  4. LeetCode简单题之最长和谐子序列
  5. 高通为何46亿美元ADAS Veoneer Arriver
  6. 用动态实现扩展TVM
  7. TVM cmake示例展示
  8. 国民技术芯片相关产业研发
  9. NVIDIA 自动驾驶软件平台
  10. Java方法详细介绍