debug mybatis 源码的时候发现一个奇怪的问题

2020-03-13 17:39:35 +08:00
 fdgdbr
开发的时候碰到了一个坑,就是 mybatis 会认为 bool 类型的 false 等于空字符串.具体就是如果一个 bool 类型的变量 a=false,那么 a == '' 这个表达式的值是 true,网上找也找到了其他人发的博客说明这个坑是因为 ognl 的语法

为了验证,我亲自 debug 了一下, 使用的 mybatis 的 jar 包的坐标是 group: org.mybatis , artifact: mybatis ,version: 3.28
但是 debug 到 org.apache.ibatis.scripting.xmltags.OgnlCache 这个类的 getValue 方法里面,发现方法里面用了 Ognl 这个类,import 的是 ognl.Ognl 这个类,但是我进入 Ognl.getValue 这个方法的时候发现,实际上执行的是 org.apache.ibatis.ognl.Ognl.getValue 这个方法,但是 OgnlCache 里面并没有 import 这个类,更加奇怪的是,我对比了一下 mybatis 的源码包和已经编译好的 jar 包,发现源码包里面并没有 org.apache.ibatis.ognl.Ognl 这个类,甚至连 ognl 这个目录都没有,但是编译好的 jar 包里面就有这个类,

描述的有点乱,不知道有没有大佬能解释下
1978 次点击
所在节点    Java
4 条回复
fdgdbr
2020-03-13 17:40:24 +08:00
version 是 3.2.8,不是 3.28
coer
2020-03-14 00:14:43 +08:00
诡异的事情发生了
Bromine0x23
2020-03-14 00:36:54 +08:00
pom.xml 253-281 行
fdgdbr
2020-03-16 09:13:26 +08:00
@Bromine0x23 多谢大佬

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/652564

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX