日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mybatis配置文件解析错误解决方法

發布時間:2024/4/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis配置文件解析错误解决方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

轉:mybatis寫mapper文件注意事項

mybatis3 mapper cdata mybatis3 null

xml中某些特殊符號作為內容信息時需要做轉義,否則會對文件的合法性和使用造成影響

Html代碼 ?
  • &lt;?<???
  • &gt;?>???
  • &amp;?&???
  • &apos;?'???
  • &quot;?"??
  • ?

    ?

    在mapper文件中寫sql語句時,為避免不必要的麻煩(如<等),建 議使用<![CDATA[ ]]>來標記不應由xml解析器進行解析的文本數據,由<![CDATA[ ?]]>包裹的所有的內容都會被解析器忽略 <![CDATA[ sql語句 ]]>?

    ?

    Xml代碼 ?
  • <select?id="getAccountsByBranch"?resultType="Account"?parameterType="string">??
  • ????<![CDATA[SELECT?*?FROM?t_acctreg_accounts?where?acctno?<?#{acctno}]]>??
  • </select>??
  • ?將整個sql語句用<![CDATA[ ? ]]>標記來避免沖突,在一般情況下都是可行的,但是如果這樣寫

    ?

    Xml代碼 ?
  • <select?id="getAccountErrorCount"?resultType="int"?parameterType="map">??
  • ????<![CDATA[?
  • ????select?count(*)?from?t_acctreg_accounterror?
  • ????<where>?
  • ????????<if?test="enddate?!=?null?and?enddate?!=?''">?
  • ????????????createdate?<=?#{enddate}?
  • ????????</if>?
  • ????????<if?test="acctno?!=?null?and?acctno?!=?''">?
  • ????????????AND?acctno?LIKE?'%'||#{acctno}||'%'?
  • ????????</if>?
  • ????</where>?
  • ????]]>??
  • </select>??
  • ?就會收到錯誤信息:

    ? ? org.springframework.jdbc.UncategorizedSQLException: Error setting null parameter. Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. Cause: java.sql.SQLException: 無效的列類型: 1111 ; uncategorized SQLException for SQL []; SQL state [99999]; error code [17004]; 無效的列類型: 1111; nested exception is java.sql.SQLException: 無效的列類型: 1111

    ? ? 這是由于該sql配置中有動態語句(where,if),where,if 條件不能放在<![CDATA[ ]]>中,否則將導致無法識別動態判斷部分,導致整個sql語句非法.應該縮小范圍,只對有字符沖突部分進行合法性調整

    ?

    Xml代碼 ?
  • <select?id="getAccountErrorCount"?resultType="int"?parameterType="map">??
  • ????select?count(*)?from?t_acctreg_accounterror??
  • ????<where>??
  • ????????<if?test="enddate?!=?null?and?enddate?!=?''">??
  • ????????????<![CDATA[createdate?<=?#{enddate}]]>??
  • ????????</if>??
  • ????????<if?test="acctno?!=?null?and?acctno?!=?''">??
  • ????????????<![CDATA[AND?acctno?LIKE?'%'||#{acctno}||'%']]>??
  • ????????</if>??
  • ????</where>??
  • </select>??
  • ?

    還有在向oracle插入數據時,mybatis3報Error setting null parameter. Most JDBC drivers require that the JdbcType must be specified for all nullable parameters,是由于參數出現了null值,對于Mybatis,如果進行操作的時候,沒有指定jdbcType類型的參數,mybatis默認 jdbcType.OTHER導致,給參數加上jdbcType可解決(注意大小寫)

    http://code.google.com/p/mybatis/issues/detail?id=224&q=Error%20setting%20null%20parameter&colspec=ID


    Xml代碼 ?
  • <insert?id="insertAccountError"?statementType="PREPARED"??
  • ????parameterType="AccountError">??
  • ????INSERT?INTO?t_acctreg_accounterror(createdate,acctno,?errorinfo)??
  • ????VALUES(#{createdate,jdbcType=DATE},#{acctno,jdbcType=VARCHAR},#{errorinfo,jdbcType=VARCHAR})??
  • </insert>??
  • ?

    轉載于:https://my.oschina.net/u/232879/blog/146337

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的mybatis配置文件解析错误解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。