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


在通過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>

 

再試,功能正常


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM