Mybatis if判断中使用了Ognl关键字导致报错解决方法
mybatis xml中使用OGNL解析参数,如果直接使用了关键字则会导致解析失败。
常见的关键字有:
字段 mybatis关键字
bor (字符|)的英文
xor 字符^的英文
and 字符&&
band 字符&
ed 字符==
neg 字符!=
lt 字符<
gt 字符>
lte 字符<=
gte 字符>=
shl 字符<<
shr 字符>>
ushr 字符>>>
if判断中使用了Ognl关键字导致报错 报错日志
Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'shr ! = ''and shr !=null'. Cause: org.apache.ibatis.ognl.ExpressionSyntaxException: Malformed OGNL expression: 'shr ! = ''and shr !=null'[org.apache.ibatis.ognl.ParseException: Encountered " "shr"
Was expecting one of:
<EOF>
"," ...
"=" ...
"?" ...
"||" ...
"or" ...
"&&" ...
"and" ...
"shr" ...
解决方案
public void testOngl() throws OgnlException {
OgnlContext context = new OgnlContext();
UserDto dto = new UserDto();
dto.setId("TMS02000000000000000000041855112");
dto.setShr("审核人1");
context.setRoot(dto);
// 报错写法
System.out.println(Ognl.getValue("shr != null and shr != ''", context, context.getRoot()));
System.out.println(Ognl.getValue("shr", context, context.getRoot()));
// 正确写法
System.out.println("#this" + Ognl.getValue("#this['shr']", context, context.getRoot()));
System.out.println("#context"+ Ognl.getValue("#context['shr']", context, context.getRoot()));
System.out.println("#root"+ Ognl.getValue("#root['shr']", context, context.getRoot()));
System.out.println("nsztId"+ Ognl.getValue("nsztId", context, context.getRoot()));
}
Mybatis if判断中使用了Ognl关键字导致报错解决方法的更多相关文章
- cmd命令中运行pytest命令导入模块报错解决方法
报错截图 ImportError while loading conftest 'E:\python\HuaFansApi\test_case\conftest.py'. test_case\conf ...
- vuex中的babel编译mapGetters/mapActions报错解决方法
vex使用...mapActions报错解决办法 vuex2增加了mapGetters和mapActions的方法,借助stage2的Object Rest Operator 所在通过 methods ...
- C#中往数据库插入空值报错解决方法
C#中的NUll于SQL中的null是不一样的, SQL中的null用C#表示出来就是DBNull.Value 在用C#往数据库里面插入记录的时候, 可能有的字段你不赋值,那么这个字段的值就为null ...
- HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本 ,请添加处理程序。如果下载文件,请添加 MIME 映射。 IIS站点中添加WCF项目后浏览网站报错解决方法。
vs2013 wcf服务 windows10 家庭中文版 上图中的红色没有出现就按照下面的方法做: 按照上图所示勾选. 刷新上图中你的网站,查看上图右边的内容是否出现,如果出现,再次重新浏览网站,看一 ...
- .vue文件在webstorm中es6语法报错解决方法
1 语法支持es6设置 Preferences > Languages & Frameworks > JavaScript 把 Javascript Language versio ...
- vuex2中使用mapMutations/mapActions报错解决方法 BabelLoaderError: SyntaxError: Unexpected token
在尝鲜vuex2时,发现vuex2增加了 mapGetters 和 mapActions 的方法,借助stage2的 Object Rest Operator 特性,可以写出下面代码:methods: ...
- mybatis invalid comparison: java.sql.Timestamp and java.lang.String报错解决方法
这个错的意思是:java.sql.Timestamp和java.lang.String无效的比较 错误的原因是:拿传入的时间类型参数与空字符串进行比较就会报这个异常 解决方法:只保留非null判断就可 ...
- hive中创建子表并插入数据过程初始化MR报错解决方法
本文继成上一篇通过hive分析nginx日志文章,详情参考下面链接: http://www.cnblogs.com/wcwen1990/p/7066230.html 接着来: 创建业务子表: drop ...
- Python中pip install MySQL-python报错解决方法
环境 Centos 7(其他Centos或者RHEL一样) 问题 在执行 pip install MySQL-python 时报错如: Command "python setup.py eg ...
- Eclipse中导入项目后js报错解决方法(转未解决问题)
本文转自:http://blog.csdn.net/chenchunlin526/article/details/54666882 Eclipse中导入项目后js报错的原因与解决方法 在我们将项目导入 ...
随机推荐
- [FAQ] puppeteer 清空输入框的值 并 重新输入
一种方式是,清空输入框可以通过如下注入代码实现,但是可能存在 和页面本身的操作 存在优先级问题. await page.evaluate( () => document.getElementBy ...
- [FAQ] 清理 Docker 环境长期构建占用磁盘空间过大问题
$ docker system df 长时间积累多次运行 docker 构建过程,Build Cache 缓存几乎占据了硬盘 1/3 的容量. $ docker system prune 此命令 ...
- WinForm 下的高性能笔迹方法
在 WPF 中可以通过 StylusPlugIn 的方式快速从触摸线程拿到触摸数据,而 WinForms 没有这个机制,但是可以通过 Microsoft.Ink 组件和 WPF 相同在 RealTim ...
- vue-单独引入js文件,构造全局方法-取某个范围的随机数(百分比)案例
1.项目下建文件夹commonFunction->random.js 这个js文件内复制代码: export default{ randomPercentage:function(a,b ...
- gprMax电磁波正演模拟方法
文章首发于:https://blog.zhaoxuan.site/archives/37.html: 第一时间获取最新文章请关注博客个人站:https://blog.zhaoxuan.site. 目录 ...
- OpenVoiceV2本地部署教程,苹果MacOs部署流程,声音响度统一,文字转语音,TTS
最近OpenVoice项目更新了V2版本,新的模型对于中文推理更加友好,音色也得到了一定的提升,本次分享一下如何在苹果的MacOs系统中本地部署OpenVoice的V2版本. 首先下载OpenVoic ...
- 使用 Amazon Cloud WAN 构建您的全球网络(内含免费套餐申请入口)
前言 对 AWS 云技术感兴趣的朋友们,可以尝试申请免费套餐的 AWS 账户,提供了 100 余种可以使用免费套餐的 AWS 云服务. 国内区域账户:https://www.amazonaws.cn/ ...
- vue4 项目的创建
1,安装vue cli 脚手架,是全局安装npm install -g @vue/cli 可以在输出信息中看到安装位置,例如:C:\Users\xiaochangjian\AppData\Roamin ...
- SqlServer 死锁查询
use master go create procedure sp_who_lock as begin declare @spid int,@bl int, @intTransactionCountO ...
- 阿里巴巴 MySQL 数据库之索引规约 (二)
索引规约 强制部分 [强制] 业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引. 说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的:另外 ...