博客01----Mybatis中的OGNL使用总结===================

2016年09月07日 23:47:41 dijkstral 阅读数:7362
经常在写mapper中用到一些OGNL,但是没怎么总结,使用方法一直模模糊糊的。抽点时间,查了别

人的blog,做个简单的总结;

1.概念;

OGNL,Object Graph Navigation Language,是一种强大的表达式语言,网上搜索这个概念,多是和

structs有关的。但是在mybatis中OGNL应用很广的;

2.基本参数:

Mybatis中常用的OGNL表达式有以下:

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

更加详细的介绍可以参考官网的介绍:https://commons.apache.org/proper/commons-

ognl/language-guide.html

在一定意义上说,mybatis中的动态sql也是基于OGNL表达式的。其中常用的元素有如下几种:

if
choose(when,otherwise)
trim
where
set
foreach

3.应用;

OGNL在mybatis中的应用,主要有两种;
1)动态SQL表达式;

举个栗子:

<<span

class=“hljs-title”>select id=<span

class=“hljs-value”>“demo1” …>

<code class="language-xml hljs  has-

numbering"> select id, name from users
<bind <span class="hljs-

attribute">name=“nameLike” <span class="hljs-

attribute">value="’%’ + name + ‘%’"/>
<where>
<if <span class="hljs-

attribute">test="name != null and name !=

‘’">
name like ‘${nameLike}’
</if>
</where>
</select>

其中的bind中的value值会使用OGNL计算,ps,其中bind的参数调用只能用$获取;


2)
${param}参数中;

<<span

class=“hljs-title”>select id=<span

class=“hljs-value”>“demo2” …>

select id,name from users
<<span class="hljs-

title">where>
<<span class="hljs-

title">if test=<span class="hljs-

value">“name != null and name != ‘’”>
name like ‘${’%’ + name

  • ‘%’}’
    </if>

</where>
<span

class=“hljs-tag”></select>
此处写的是${’%’

  • name + ‘%’},而不是%${name}%,这两种方式的结果一样,但是处理过程不一样。
    ps,说明一下#

和的区别:的区别:的区别:{} 为原样输出,你传什么,sql里就填入什么,比如有引号它也会原样填到sql里。#

{} 会使用 PreparedStatement,变量处用 ? 代替。
在能使用 #{} 尽量使用它吧,可以防止sql注

入。

以下是一个OGNL的调用静态方法的示例:

作者:dijkstral
来源:CSDN
原文:https://blog.csdn.net/l153097889/article/details/52464548
版权声明:本文为博主原创文章,转载请附上博文链接!

Mybatis中的OGNL使用总结=相关推荐

  1. 为了熟练掌握动态SQL你必须要知道Mybatis中的OGNL表达式

    前言 OGNL是个什么东西?很多刚入门Java的同学会有点陌生.但是在Structs流行的时代OGNL可是必会的数据渲染技术.它全称Object Graph Navigation Language,作 ...

  2. 你必须要知道Mybatis中的OGNL表达式

    文章目录 前言 Mybatis中的OGNL 条件断言 四则运算赋值 类的内置方法 取值操作 赋值操作 总结 前言 OGNL是个什么东西?很多刚入门Java的同学会有点陌生.但是在Structs流行的时 ...

  3. c++ 传入动态参数_一文了解Mybatis中动态SQL的实现

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

  4. 9、mybatis中动态sql的使用

    对于初学者,如何进行mybatis的学习呢?我总结了几点,会慢慢的更新出来.首先大家需要了解mybatis是什么.用mybatis来做什么.为什么要用mybatis.有什么优缺点:当知道了为什么的时候 ...

  5. SQL 拼接语句输出_一文了解Mybatis中动态SQL的实现

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

  6. mybatis 中 if-test 判断详解

    <if test="takeWay == '0'">]mybatis的if判断 单个的字符要写到双引号里面才行,改为<if test='takeWay == &q ...

  7. service层的作业+mybatis中的重要组件

    一.JavaWeb中service层的作用 MVC = Jsp + Servlet + JavaBean 其中jsp View,servlet Controller,javaBean 是一个可复用的j ...

  8. <if test=“state!=null and state==‘0‘ “> mybatis中使用if test判断参数值得问题

    记录一个使用mybatis中的小问题 使用 当条件中有判断值是, 要是用 ==,而不能使用单个 =, mybatis是用OGNL表达式来解析的,在OGNL的表达式中,'1'会被解析成字符,java是强 ...

  9. Mybatis中动态sql小结

    这篇文章讲述的是Mybatis中动态sql小结,如有错误或不当之处,还望各位大神批评指正. 什么是动态sql MyBatis 的强大特性之一便是它的动态 SQL,它极大的简化了我们拼接SQL的操作. ...

最新文章

  1. 【❤️算法系列之二叉树的实现(包含前序、中序、后序遍历以及节点的查找和删除)❤️】
  2. 将excel用VBA生成指定格式的TXT文件
  3. C 程序的存储空间记录
  4. python混沌时间序列分析_用Python进行时间序列分析
  5. 计算机网络综合应用实验报告,计算机网络综合实验报告
  6. docker nginx 反向代理
  7. IDM无法连接到目标服务器
  8. This computer does not support Intel Virtualization Technology (VT-x) or it is being exclusively use
  9. Vue3 Vite 项目踩坑札记
  10. JAVA并发编程的书籍及资料
  11. ios底层是linux,深入iOS系统底层之CPU寄存器介绍
  12. 【观察】飞象工业互联网平台,阿里云IoT的沉淀与释放
  13. gulp压缩html
  14. 内存虚拟化硬件基础——EPT
  15. OpenCV/C++:点线面相关计算
  16. 图解GitHub和SourceTree 入门教程 使用教程
  17. Android 仿QQ动态背景登录
  18. Qt::Key键盘按键说明
  19. 交换机Access模式和Trunk模式配置演示
  20. yum源配置 小白专属

热门文章

  1. 5G NR PTRS
  2. Uva1665岛屿——并查集
  3. HDU 6608 Fansblog(随机素数测试+思维)
  4. 使用 k3d 在Windows上安装 k3s
  5. 用Python做数据分析之数据处理及数据提取
  6. zigbee判断首次入网
  7. SparkRDD函数详解
  8. 全球重磁异常以及水深数据分享
  9. 查看zookeeper的版本号
  10. 华为清理34+老员工,你怎么看待这种狼性文化?