V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fdgdbr
V2EX  ›  Java

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

  •  
  •   fdgdbr · 2020-03-13 17:39:35 +08:00 · 2056 次点击
    这是一个创建于 1719 天前的主题,其中的信息可能已经有所发展或是发生改变。
    开发的时候碰到了一个坑,就是 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 包里面就有这个类,

    描述的有点乱,不知道有没有大佬能解释下
    4 条回复    2020-03-16 09:13:26 +08:00
    fdgdbr
        1
    fdgdbr  
    OP
       2020-03-13 17:40:24 +08:00
    version 是 3.2.8,不是 3.28
    coer
        2
    coer  
       2020-03-14 00:14:43 +08:00 via Android
    诡异的事情发生了
    Bromine0x23
        3
    Bromine0x23  
       2020-03-14 00:36:54 +08:00   ❤️ 1
    pom.xml 253-281 行
    fdgdbr
        4
    fdgdbr  
    OP
       2020-03-16 09:13:26 +08:00
    @Bromine0x23 多谢大佬
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5513 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 08:41 · PVG 16:41 · LAX 00:41 · JFK 03:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.