最近在排查一个ORM层相关的生产BUG时,在网上查找资料,看到一些人反馈mybatis 3.3.0之前版本的一个空指针BUG,于是自己看源码研究了一下,还真有这种问题,下面以mybatis 3.1.1版本源码作为说明。 BUG产生的源头在OGNL表达式上,直接根据结论放上自己的一个测试类,断点选择在 ...
分类:
其他好文 时间:
2021-04-15 12:39:39
阅读次数:
0
第三章 MyBatis框架动态SQL 动态SQL语句是基于OGNL表达式的 通过动态SQL完成多条件查询等逻辑实现 用于实现动态SQL的元素主要有 标签说明 if 条件判断 where 为SQL语句动态添加where关键字 choose 条件判断 foreach 以遍历方式处理集合类型参数 set ...
分类:
数据库 时间:
2021-01-14 11:32:54
阅读次数:
0
bind标签可以使用OGNL表达式创建一个变量并将其绑定到上下文中。 在前面的UserMapper.xml有一个selectByUser方法,这个方法用到了like查询条件。 使用concat函数连接字符串,在MySQL中,这个函数支持多个参数,但在Oracle中支持两个参数。由于不同数据库之间的语 ...
分类:
数据库 时间:
2020-07-08 13:20:25
阅读次数:
111
使用<bind/>标签进行模糊查询 bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文,bind适用于mysql,sql server,oracle <select id="getGoodsCondition" parameterType="Goods" resultType=" ...
分类:
其他好文 时间:
2020-06-16 21:56:57
阅读次数:
62
package com.cmcc.log; import ognl.Ognl; import ognl.OgnlContext; import ognl.OgnlException; public class OGNL { public static void main(String[] args) ...
分类:
其他好文 时间:
2020-06-04 21:54:04
阅读次数:
58
1、Struts与OGNL的结合原理 (1)值栈: OGNL表达式要想运行就要准备一个OGNLContext对象,Struts2内部含有一个OGNLContext对象,名字叫做值栈。 值栈也由两部分组成,一部分叫做root,里面放置的是栈,另一部分是context放入的是数据中心。 (2)栈: 利用 ...
分类:
其他好文 时间:
2020-02-07 21:05:32
阅读次数:
101
一、OGNL1.1 概述1.2 OGNL 五大类功能1.3 演示二、ValueStack2.1 概述2.2 ValueStack结构2.3 结论2.3 一些问题三、OGNL表达式常见使用符号3.1 #号3.2 %号3.3 $号一、OGNL1.1 概述OGNL是Object-Graph Navigat... ...
分类:
其他好文 时间:
2019-11-11 09:21:42
阅读次数:
110
例如我想给添加一个属性data-page,可以根据(SpringEL/Ognl)表达式计算获得。 需求: 期望效果 app个数大于0,有数据时链接 <xxx data-page="/app/list"> app个数等于0,没有数据时链接如下 <xxx data-page="/app/create"> ...
分类:
其他好文 时间:
2019-10-15 09:28:35
阅读次数:
152
1.mapper中比较字符串时需要注意的问题如下: mybatis 映射文件中,if标签判断字符串相等,两种方式:因为mybatis映射文件,是使用的ognl表达式,所以在判断字符串isComplete变量是否是字符串Y的时候<if test="isComplete=='Y'.toString()" ...
分类:
其他好文 时间:
2019-10-14 12:25:51
阅读次数:
142
mybatis 的动态sql语句是基于OGNL表达式的。可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: 1. if 语句 (简单的条件判断) 2. choose (when,otherwize) ,相当于java 语言中的 switch ,与 j ...
分类:
数据库 时间:
2019-07-31 01:09:51
阅读次数:
112