功能需求

根据性别和名字查询用户

官方文档

MyBatis——动态 SQL

SQL语句

SELECT id, username, birthday, sex, address FROM `user` WHERE sex = 1 AND username LIKE '%张%'

Mapper.xml文件配置

<!-- 根据条件查询用户 --><select id="queryUserByWhere" parameterType="user" resultType="user">SELECT id, username, birthday, sex, address FROM `user`WHERE sex = #{sex} AND username LIKE'%${username}%'</select>

改进1:

1=1 绝对成立

<!-- 根据条件查询用户 -->
<select id="queryUserByWhere" parameterType="user" resultType="user">SELECT id, username, birthday, sex, address FROM `user`WHERE 1=1<if test="sex != null and sex != ''">AND sex = #{sex}</if><if test="username != null and username != ''">AND username LIKE'%${username}%'</if>
</select>

改进2:

where标签可以自动添加where,同时处理sql语句中第一个and关键字

<!-- 根据条件查询用户 -->
<select id="queryUserByWhere" parameterType="user" resultType="user">SELECT id, username, birthday, sex, address FROM `user`
<!-- where标签可以自动添加where,同时处理sql语句中第一个and关键字 --><where><if test="sex != null">AND sex = #{sex}</if><if test="username != null and username != ''">AND username LIKE'%${username}%'</if></where>
</select>

where 元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句。而且,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除。

如果 where 元素与你期望的不太一样,你也可以通过自定义 trim 元素来定制 where 元素的功能。比如,和 where 元素等价的自定义 trim 元素为:

<trim prefix="WHERE" prefixOverrides="AND |OR ">...
</trim>

参考文章

Mybatis 动态sql语句(if标签和where标签)

**mybatis处理SQL查询中的where后面and常用的2种方法**

Mybatis where 1=1 和 标签

MyBatis——动态SQL语句——if标签和where标签复合使用相关推荐

  1. Mybatis—动态SQL语句与逆向工程

    Mybatis动态SQL语句与逆向工程 MyBatis动态SQL语句与逆向工程 1.动态SQL语句 1.1.动态SQL是什么 1.2.动态SQL有什么用 1.3.基于XML的实现 1.3.2.接口文件 ...

  2. Mybatis动态SQL语句大全

    动态 SQL 语句大全 读完这篇文章里你能收获到 Mybatis动态SQL语句大全 Mybatis中如何定义变量 Mybatis中如何提取公共的SQL片段 1.if语句 需求:根据作者名字和博客名字来 ...

  3. Mybatis 动态Sql语句《常用》

    MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉 ...

  4. MyBatis动态sql语句使用

    一.MyBatis动态语句分为4种元素: 元素 作用 描述 if 条件判断 单条件判断 choose(when.otherwise) 条件选择,相当Java when 多条件分支判断 where.se ...

  5. Mybatis 动态sql语句(if标签和where标签)

    功能:根据性别和名字查询用户 查询sql语句: SELECT id, username, birthday, sex, address FROM `user` WHERE sex = 1 AND us ...

  6. mybatis动态SQL语句

    三.动态SQL语句 有些时候,sql语句where条件中,需要一些安全判断,例如按性别检索,如果传入的参数是空的,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息.这是我们可以使 ...

  7. 【转】mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句

    转自:除非申明,文章均为一号门原创,转载请注明本文地址,谢谢! 转载地址:http://blog.csdn.net/kutejava/article/details/9164353#t5 1. if ...

  8. Mybatis动态sql语句的生成

    在XMLLanguageDriver的createSQLSource()方法中,可以将已经经过解析的xml节点传入,并且传入相应的参数类型,开始动态sql语句的生成. @Override public ...

  9. MyBatis学习总结(11)——MyBatis动态Sql语句

    MyBatis中对数据库的操作,有时要带一些条件,因此动态SQL语句非常有必要,下面就主要来讲讲几个常用的动态SQL语句的语法 MyBatis中用于实现动态SQL的元素主要有: if choose(w ...

最新文章

  1. 8个问题全面了解5G关键技术Massive MIMO
  2. 笔记-信息化与系统集成技术-人工智能基础知识
  3. ORA-01658:无法为表空间XXX中的段创建initial区
  4. CISCO 防火墙建立穿越NAT的×××几种解决方法
  5. [转载] Python3.X 线程中信号量的使用方法示例
  6. 关于PredicateT委托
  7. ELK详解(五)——Head插件简单使用
  8. c语言模拟uart协议的收发
  9. 计算机正负符号 怎么打,电脑正负号怎么打出来(电脑键盘快速打出特殊符号)...
  10. 由浅入深的了解Groovy的基本使用
  11. 【洛谷题解】P1427 小鱼的数字游戏
  12. 从微信封杀拼多多链接浅谈我是如何解决微信屏蔽封杀外部以及广告链接的
  13. 进入web端进行来源判断后 自动跳转至wap端页面
  14. Visual Studio中如何设置背景图片,壁纸
  15. 【python数据挖掘课程】二十八.基于LDA和pyLDAvis的主题挖掘及可视化分析
  16. 自建图床之一:使用幻想领域搭建免费新浪图床网站
  17. Windows平台C/C++实现对键盘或鼠标驱动设备的禁用、启动、卸载以及刷新设备管理列表功能
  18. [零基础学python]关于循环的小伎俩
  19. transforms.Normalize,计算数据量大数据集的像素均值(mean)和标准差(std)
  20. ppc64le处理器国产power8服务器CentOS7.2安装open-jdk

热门文章

  1. 查看端口占用情况:FPort和Moo0 ConnectionWatcher软件介绍
  2. oracle查询数据库启动时的参数文件,【Oracle】数据库启动阶段参数文件、控制文件的问题处理...
  3. navicat使用查询向表中插入一行记录_SQL--每日一解------Bulk Insert 快速插入
  4. html怎么转换undefined,JavaScript之Undefined详解
  5. php数组修改键值,php数组中子数组如何修改键值
  6. python章节总结_《Python深度学习》第一章总结
  7. Linux Centos6.5如何截图
  8. 程序设计囚犯与灯泡 C语言代码,100个囚犯和灯泡的那些事儿(下)
  9. java中怎样导入图片6_java程序员进阶篇之必须掌握的6张思维导图!
  10. 我的世界java版怎么装在u盘_我的世界选择器参数怎么使用?