Mybatis中的OGNL使用总结=
博客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使用总结=相关推荐
- 为了熟练掌握动态SQL你必须要知道Mybatis中的OGNL表达式
前言 OGNL是个什么东西?很多刚入门Java的同学会有点陌生.但是在Structs流行的时代OGNL可是必会的数据渲染技术.它全称Object Graph Navigation Language,作 ...
- 你必须要知道Mybatis中的OGNL表达式
文章目录 前言 Mybatis中的OGNL 条件断言 四则运算赋值 类的内置方法 取值操作 赋值操作 总结 前言 OGNL是个什么东西?很多刚入门Java的同学会有点陌生.但是在Structs流行的时 ...
- c++ 传入动态参数_一文了解Mybatis中动态SQL的实现
一.动态SQL简介 MyBatis的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的 ...
- 9、mybatis中动态sql的使用
对于初学者,如何进行mybatis的学习呢?我总结了几点,会慢慢的更新出来.首先大家需要了解mybatis是什么.用mybatis来做什么.为什么要用mybatis.有什么优缺点:当知道了为什么的时候 ...
- SQL 拼接语句输出_一文了解Mybatis中动态SQL的实现
一.动态SQL简介 MyBatis的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的 ...
- mybatis 中 if-test 判断详解
<if test="takeWay == '0'">]mybatis的if判断 单个的字符要写到双引号里面才行,改为<if test='takeWay == &q ...
- service层的作业+mybatis中的重要组件
一.JavaWeb中service层的作用 MVC = Jsp + Servlet + JavaBean 其中jsp View,servlet Controller,javaBean 是一个可复用的j ...
- <if test=“state!=null and state==‘0‘ “> mybatis中使用if test判断参数值得问题
记录一个使用mybatis中的小问题 使用 当条件中有判断值是, 要是用 ==,而不能使用单个 =, mybatis是用OGNL表达式来解析的,在OGNL的表达式中,'1'会被解析成字符,java是强 ...
- Mybatis中动态sql小结
这篇文章讲述的是Mybatis中动态sql小结,如有错误或不当之处,还望各位大神批评指正. 什么是动态sql MyBatis 的强大特性之一便是它的动态 SQL,它极大的简化了我们拼接SQL的操作. ...
最新文章
- 【❤️算法系列之二叉树的实现(包含前序、中序、后序遍历以及节点的查找和删除)❤️】
- 将excel用VBA生成指定格式的TXT文件
- C 程序的存储空间记录
- python混沌时间序列分析_用Python进行时间序列分析
- 计算机网络综合应用实验报告,计算机网络综合实验报告
- docker nginx 反向代理
- IDM无法连接到目标服务器
- This computer does not support Intel Virtualization Technology (VT-x) or it is being exclusively use
- Vue3 Vite 项目踩坑札记
- JAVA并发编程的书籍及资料
- ios底层是linux,深入iOS系统底层之CPU寄存器介绍
- 【观察】飞象工业互联网平台,阿里云IoT的沉淀与释放
- gulp压缩html
- 内存虚拟化硬件基础——EPT
- OpenCV/C++:点线面相关计算
- 图解GitHub和SourceTree 入门教程 使用教程
- Android 仿QQ动态背景登录
- Qt::Key键盘按键说明
- 交换机Access模式和Trunk模式配置演示
- yum源配置 小白专属