fdgdbr
V2EX  ›  Java

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

  •  
  •   fdgdbr · Mar 13, 2020 · 2538 views
    This topic created in 2288 days ago, the information mentioned may be changed or developed.
    开发的时候碰到了一个坑,就是 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 replies    2020-03-16 09:13:26 +08:00
    fdgdbr
        1
    fdgdbr  
    OP
       Mar 13, 2020
    version 是 3.2.8,不是 3.28
    coer
        2
    coer  
       Mar 14, 2020 via Android
    诡异的事情发生了
    Bromine0x23
        3
    Bromine0x23  
       Mar 14, 2020   ❤️ 1
    pom.xml 253-281 行
    fdgdbr
        4
    fdgdbr  
    OP
       Mar 16, 2020
    @Bromine0x23 多谢大佬
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1095 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 17:59 · PVG 01:59 · LAX 10:59 · JFK 13:59
    ♥ Do have faith in what you're doing.