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. HBase管理与监控——内存调优

    HMaster 没有处理过重的负载,并且实际的数据服务不经过 HMaster,它的主要任务有2个:一.管理Hbase Table的 DDL操作, 二.region的分配工作,任务不是很艰巨. 但是如果 ...

  2. React Native面试题记录

    一.ES6中增加了那些新的功能? 1> for-of循环: 使用 for-of 的时候,循环的是数组内部的元素且不会出现 for-in 中将附加属性也遍历的情况,其次,循环变量的类型和其在数组中 ...

  3. 同步pod容器内时区

    同步pod容器内时区 .直接修改镜像的时间设置,好处是应用部署时无需做特殊设置,但是需要手动构建Docker镜像. .部署应用时,单独读取主机的“/etc/localtime”文件,即创建pod时同步 ...

  4. 【Web】如何注释?

    HTML 形式:<!-- 注释内容 --> 实例: <!-- <p>这是第一段</p> --> CSS 形式:/* 注释内容 */ 实例: /* 选中i ...

  5. Linux核心系统命令

    关机,重启: shutdown -h now:关机 shutdown -r now:重启 文件和目录操作命令: pwd:显示当前所在路径 cd:切换目录 cd - :切换到上一次所在路径 cd ~:切 ...

  6. 酷Q插件_SDK———入门与使用

    1.这里使用的是易语言的SDK,所以请看不惯的人自行离开.{wymbf.} 1.2 这里不会直接给你工程,请用动手打代码,动脑思考. 1.3 不知道.不了解酷Q是干嘛的,请访问:https://cqp ...

  7. 【并行计算-CUDA开发】warp是调度和执行的基本单位而harf-warp为存储器操作基本单位

    1.在用vs运行cuda的一些例子时,在编译阶段会报出很多警告: warning C4819 ...... 解决这个警告的方法是打开出现warning的文件,Ctrl+A全选,然后在文件菜单:file ...

  8. Linux 安装 openoffice

    1 说明 本文档采用rpm包方式安装,操作系统为centos 2 下载openoffice rpm包 创建nginx源码包存放目录 mkdir /usr/local/src/openoffice cd ...

  9. eclipse控制台界面乱码问题

    一.首先,eclipse的控制台必须用GBK编码,必须满足以下两个条件: 1.Windows---->Preferences---->Workspace---->Text file ...

  10. 常用小功能js函数-函数防抖

    函数防抖:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时.这个我经常用到/** * 函数防抖 * fun 需要延时执行的函数 * delayTime 延时时间 * **/export ...