首页 > 编程语言 > 详细

java.lang.NumberFormatException: For input string: "F"

时间:2019-09-17 18:19:00      阅读:255      评论:0      收藏:0      [点我收藏+]

在通过myBatis执行sql时,报错: java.lang.NumberFormatException: For input string: "F"

xml中sql内容为:

                    <if test="myKey == ‘P‘ ">
                        and `Field1` = #{fieldname}
                    </if>

其中 fieldname的值为 F, 没明白会报 NumberFormatException, 明明是字符型,后一步步调试代码到:

\.m2\repository\org\mybatis\mybatis\3.5.2\mybatis-3.5.2.jar!\org\apache\ibatis\ognl\ASTNotEq.class

报错的代码为(OgnlOps.equal):

    protected Object getValueBody(OgnlContext context, Object source) throws OgnlException {
        Object v1 = this._children[0].getValue(context, source);
        Object v2 = this._children[1].getValue(context, source);
        return OgnlOps.equal(v1, v2) ? Boolean.FALSE : Boolean.TRUE;
    }

v1,v2值分别为下图:

技术分享图片

 

 

 v2的值成了P,得到v2的类型为: 

技术分享图片

 

 

 没明白,后边试着把 <if test="myKey == ‘P‘ "> 调整为:  <if test="myKey == ‘PP‘ "> 多加了一个P

这时v2的类型就为String了,估计MyBatis如果发现为单字符,都统一处理为了 Character, 试着调整为: <if test="myKey == "P" "> 单引号改为双引号(或加转义符),都不行

试着转换单双引号为(test里外包的将双引号改为单引号, P字符调整为双引号): 

 

                    <if test=‘myKey == "P" ‘>
                        and `Field1` = #{fieldname}
                    </if>

 

再试,功能正常

java.lang.NumberFormatException: For input string: "F"

原文:https://www.cnblogs.com/Wicher-lsl/p/11535942.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!