2014年5月5日 星期一

Mybatis - if test dynamic sql出現 org.apache.ibatis.exceptions.PersistenceException : ###Error querying database. Cause: java.lang.NumberFormatException: For input string: "

參考:test expression throws NumberFormatException

今天使用mybatis if test出現個問題,原先使用如下:

 < select id="selectTable" parametertype="hashmap" resulttype="hashmap">
  select * from TABLE 
  
    
    < where>
      < if test="type == 'M' or type=='C' "> 
    
    ColA=#{volue} 
    < / if>
    < / where>  
        
  
 </ select> 

但卻出現了:

com.XXXX.util.exception.MIException: org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.NumberFormatException: For input string: "M"

### Cause: java.lang.NumberFormatException: For input string: "M"

這就奇怪了,明明欲檢測的M與C應該是string怎會被轉換為number做檢查呢?
原來是"(雙引號)與'(單引號)解析的問題,改成如下:
 
< select id="selectTable" parametertype="hashmap" resulttype="hashmap">
  select * from TABLE 
  
  < where>
    < if test='type == "M" or type=="C" '> 
    
    ColA=#{volue} 
    < / if>
    < / where>        
  
</ select>
      

正常運作~ p.s話說就算使用了plugin貼xml語法還是會不正常啊...所以空格這種就自行刪除吧

沒有留言:

張貼留言