MyBatis常用OGNL表达式

  1. e1 or e2
  2. e1 and e2
  3. e1 == e2,e1 eq e2
  4. e1 != e2,e1 neq e2
  5. e1 lt e2:小于
  6. e1 lte e2:小于等于,其他gt(大于),gte(大于等于)
  7. e1 in e2
  8. e1 not in e2
  9. e1 + e2,e1 * e2,e1/e2,e1 - e2,e1%e2
  10. !e,not e:非,求反
  11. e.method(args)调用对象方法
  12. e.property对象属性值
  13. e1[ e2 ]按索引取值,List,数组和Map
  14. @class@method(args)调用类的静态方法
  15. @class@field调用类的静态字段值

==============================

注意:不能使用   <   ,因为该符号在xml中表示一个标签的开始符号,因此会报错,需要进行转义。

1.1.if

n  if标签:判断语句,用于进行逻辑判断的。

test属性:用来编写表达式,支持ognl.

案例:查询男性用户,如果输入了用户名,按用户名模糊查询,如果没有输入用户名,就查询所有男性用户。

正常的sql语句:查询男性并且用户名中包含zhang

但是要求时还要判断用户是否输入用户名来做不同的查询要求,而这里似乎没有办法判断是否输入了用户名,因此可以考虑使用动态sql来完成这个功能。

1.1.1.         定义接口

在UserMapper接口中定义方法:

/**

* 查询男性用户,如果输入了用户名,按用户名模糊查询

* @param userName

* @return

*/

public List<User> queryUsersLikeUserName(@Param("userName")String userName);

1.1.2.         编写mapper.xml

在UserMapper映射文件中,定义接口方法对应的Statement

<select id="queryUsersLikeUserName" resultType="User">

select * from tb_user where sex = 1

<!--

if标签:用来进行判断

test属性:编写ognl表达式

-->

<if test="userName!=null and userName.trim()!=''">

and user_name like '%' #{userName} '%'

</if>

</select>

1.1.3.         测试

在UserMapperTest测试类中,添加测试用例

1.1.3.1.      测试1

当用户名为" "或者null或者""时

@Test

public void testQueryUsersLikeUserName(){

List<User> list = userMapper.queryUsersLikeUserName(" ");

for (User user : list) {

System.out.println(user);

}

}

查询结果:查询出了所有男性

mybatis 动态sql 的笔记 以及标签的更多相关文章

  1. MyBatis动态SQL之一使用 if 标签和 choose标签

    bootstrap react https://segmentfault.com/a/1190000010383464 xml 中 < 转义 to thi tha <if test=&qu ...

  2. mybatis动态SQL中的set标签的使用

    set标记是mybatis提供的一个智能标记,我一般将其用在修改的sql中,例如以下情况: <update> update user <set> <if test=&qu ...

  3. mybatis动态sql中的trim标签的使用

    trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码: 1. select * from user <trim prefix="WHERE" p ...

  4. mybatis动态sql中的trim标签的使用(转)

    trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码: 1. select * from user <trim prefix="WHERE" p ...

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

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

  6. Mybatis动态SQL单一基础类型参数用if标签

    Mybatis动态SQL单一基础类型参数用if标签时,test中应该用 _parameter,如: 1 2 3 4 5 6 <select id="selectByName" ...

  7. MyBatis动态SQL中trim标签的使用

    My Batis 官方文档 对 动态SQL中使用trim标签的场景及效果介绍比较少. 事实上trim标签有点类似于replace效果. trim 属性 prefix:前缀覆盖并增加其内容 suffix ...

  8. mybatis原理分析学习记录,mybatis动态sql学习记录

    以下个人学习笔记,仅供参考,欢迎指正. MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架,其主要就完成2件事情: 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转 ...

  9. 记Mybatis动态sql

    目录 记MyBatis动态SQL 1.< SQL >标签 2.< if >标签 3.分支标签 1.第一种:用在查询条件上用choose-when:otherwise可不要 2. ...

随机推荐

  1. DS1302时钟基础使用(含代码)

    了解其管脚 X1 X2 32.768KHz 晶振管脚 GND 地 RST 复位脚 I/O 数据输入/输出引脚,具有三态 SCLK 串行时钟 Vcc1,Vcc2(备用电源供电) 电源供电管脚 DS130 ...

  2. vue中 key 值的作用

    原文地址 我们知道,vue和react都实现了一套虚拟DOM,使我们可以不直接操作DOM元素,只操作数据便可以重新渲染页面.而隐藏在背后的原理便是其高效的Diff算法. vue和react的虚拟DOM ...

  3. 3-3 man手册介绍

    man手册介绍 内容表示的意义: 各部分功能说明: SECTION: name:命令的名称及功能描述: SYNOPSIS:命令使用格式摘要: DESCRIPTION:详细描述信息: OPTIONS:选 ...

  4. Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法

    时隔一个多月我又回来啦! 坚持真的是很难的一件事,其它事情稍忙,就很容易说服自己把写博客的计划给推迟了. 好在终于克服了自己的惰性,今天又开始了. 本篇继续我的Luaframework学习之路. 一. ...

  5. 深入理解C语言-深入理解void

    void的字面意思是"无类型",void *则为"无类型指针",void *可以指向任何类型的数据 void含义 void几乎只有注释和限制程序的作用,定义一个 ...

  6. Java垃圾收集算法1

    Java垃圾收集算法 由于垃圾收集算法的实现涉及大量的程序细节,而且每个平台的虚拟机操作内存的方法又各不相同,因此博客中不过多的讨论算法的实现,只是介绍几种算法的思想以及发展. 相关阅读: 1.深入理 ...

  7. WebContent下新建目录放入jsp,跳转servlet页面出错解决

    为方便分类jsp文件,于是在web-content下新建了一级目录,将jsp文件放入其中,结果原本跳转的servlet出现404错误: 解决如下: 在用eclipse创建的servle会自动生成一个注 ...

  8. 第八周课程总结&实验报告(六)

    第八周课程总结 启动多线程售票(上课老师说要加入作业的部分) public class TestDemo { public static void main(StringD args) throws ...

  9. spring-boot 连接数据库(六)

    环境 jdk 6 tomcat 6.0.53 sts 4.4.2 maven 3.2.5 mysql 5.7 准备 接下来的数据库操作基于 mysql,所以需要一套可用的 mysql 环境. 引入 j ...

  10. G.Colorful String(The Preliminary Contest for ICPC Asia Xuzhou 2019)

    https://nanti.jisuanke.com/t/4 #include <bits/stdc++.h> using namespace std; ,; typedef unsign ...