mybatis參數(shù)格式化異常

昨天運(yùn)行程序,程序報了mybatis參數(shù)格式化異常:NumberFormatException: For input string:"xx"潭流,錯誤日志如下:

錯誤日記:

```[16/08/1602:15:40:040CST]http-nio-8080-exec-4ERRORfilter.ExceptionFilter:? [DUBBO]Gotuncheckedandundeclaredexceptionwhichcalledby127.0.0.1.service:cn.test.web.service.ShareService,method:getShareChannelStInfoList,exception:org.mybatis.spring.MyBatisSystemException:nestedexceptionisorg.apache.ibatis.exceptions.PersistenceException:

###Errorqueryingdatabase.Cause:java.lang.NumberFormatException:Forinputstring:"2016-08-11"

###Cause:java.lang.NumberFormatException:Forinputstring:"2016-08-11",dubboversion:2.8.4,currenthost:127.0.0.1

org.mybatis.spring.MyBatisSystemException:nestedexceptionisorg.apache.ibatis.exceptions.PersistenceException:

###Errorqueryingdatabase.Cause:java.lang.NumberFormatException:Forinputstring:"2016-08-11"

###Cause:java.lang.NumberFormatException:Forinputstring:"2016-08-11"

atorg.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:76)

atorg.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:399)

atcom.sun.proxy.$Proxy32.selectList(UnknownSource)

atorg.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:205)

atorg.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:122)

atorg.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:64)

atorg.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53)

atcom.sun.proxy.$Proxy57.getShareChannelStInfo(UnknownSource)

atcn.test.web.repository.ShareStInfoRepo.getShareChannelList(ShareStInfoRepo.java:37)

atcn.test.web.impl.ShareServiceImpl.getShareChannelStInfoList(ShareServiceImpl.java:72)

atcom.alibaba.dubbo.common.bytecode.Wrapper19.invokeMethod(Wrapper19.java)

atcom.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46)

atcom.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72)

atcom.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)

atcom.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:64)

atcom.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)

atcom.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)

atcom.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)

atcom.alibaba.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:42)

atcom.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)

atcom.alibaba.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:78)

atcom.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)

atcom.alibaba.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:70)

atcom.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)

atcom.alibaba.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:132)

atcom.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)

atcom.alibaba.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)

atcom.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)

atcom.alibaba.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:38)

atcom.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)

atcom.alibaba.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:52)

atcom.alibaba.dubbo.common.bytecode.proxy9.getShareChannelStInfoList(proxy9.java)

atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)

atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

atjava.lang.reflect.Method.invoke(Method.java:498)

atorg.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137)

atorg.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:288)

atorg.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:242)

atorg.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:229)

atorg.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356)

atorg.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)

atorg.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)

atorg.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)

atorg.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)

atjavax.servlet.http.HttpServlet.service(HttpServlet.java:729)

atcom.alibaba.dubbo.rpc.protocol.rest.DubboHttpServer$RestHandler.handle(DubboHttpServer.java:86)

atcom.alibaba.dubbo.remoting.http.servlet.DispatcherServlet.service(DispatcherServlet.java:64)

atjavax.servlet.http.HttpServlet.service(HttpServlet.java:729)

atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)

atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

atorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)

atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

atcom.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)

atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)

atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)

atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)

atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

atorg.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)

atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)

atorg.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)

atorg.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)

atorg.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)

atorg.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)

atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

atorg.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

atjava.lang.Thread.run(Thread.java:745)

?```

錯誤代碼

這段代碼竞惋,就是mybatis的動態(tài)查詢,就是組裝sql語句灰嫉。但是拆宛,這里必須注意一個問題,那就是departmentName 和 ordertime,這兩個變量是EarlyOrder中的私有變量讼撒,是String類型的浑厚。 錯誤的引起,是 departmentName != 0 引起的根盒,原因給的是字符串钳幅,卻拿一個數(shù)字比較,mybatis會做一些轉(zhuǎn)化炎滞,結(jié)果在數(shù)字格式化時發(fā)生異常敢艰。

<selectid="selectEarlyOrder"resultType="com.example.demo.model.EarlyOrder">

selectusername,ordertime,overworktime,status,departmentname

fromtabordermeal

<where>

1=1

<iftest="departmentName != 0 and departmentName != '' and departmentName !=null and departmentName != 'null'">

anddepartmentName=#{departmentName}

</if>

<iftest="ordertime != '' and ordertime !=null and ordertime != 'null'">

andordertimeLIKE'${ordertime}%'

</if>

</where>

limit#{pageindex},#{pagesize}

</select>


解決錯誤

加單引號是無法解決的,比如:departmentName != '0'册赛,此時钠导,mybatis認(rèn)為拿一個字符串(String)和一個字符(char)比較震嫉,也會報錯。 因此牡属,有幾種方法可以解決此問題:

**轉(zhuǎn)成字符串:'0'.toString()**

<selectid="selectEarlyOrder"resultType="com.example.demo.model.EarlyOrder">

selectusername,ordertime,overworktime,status,departmentname

fromtabordermeal

<where>

1=1

<iftest="departmentName != '0'.toString() and departmentName != '' and departmentName !=null and departmentName != 'null'">

anddepartmentName=#{departmentName}

</if>

<iftest="ordertime != '' and ordertime !=null and ordertime != 'null'">

andordertimeLIKE'${ordertime}%'

</if>

</where>

limit#{pageindex},#{pagesize}

</select>

加轉(zhuǎn)義實體字符串引號&quot;

<iftest=\"departmentName != null and departmentName != "0"\">

外部單雙引號交換:

<iftest='startd != null and startd != \"0\"'>

注意:在xml配置中票堵,使用第三種方式,不需要添加反斜杠("\"),<if test='startd != null and startd != "0"'>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逮栅,一起剝皮案震驚了整個濱河市悴势,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌证芭,老刑警劉巖瞳浦,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異废士,居然都是意外死亡叫潦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門官硝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來矗蕊,“玉大人,你說我怎么就攤上這事氢架∩悼В” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵岖研,是天一觀的道長卿操。 經(jīng)常有香客問我,道長孙援,這世上最難降的妖魔是什么害淤? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮拓售,結(jié)果婚禮上窥摄,老公的妹妹穿的比我還像新娘。我一直安慰自己础淤,他們只是感情好崭放,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鸽凶,像睡著了一般币砂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上玻侥,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天道伟,我揣著相機(jī)與錄音,去河邊找鬼。 笑死蜜徽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的票摇。 我是一名探鬼主播拘鞋,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼矢门!你這毒婦竟也來了盆色?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤祟剔,失蹤者是張志新(化名)和其女友劉穎隔躲,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體物延,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宣旱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了叛薯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浑吟。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖耗溜,靈堂內(nèi)的尸體忽然破棺而出组力,到底是詐尸還是另有隱情,我是刑警寧澤抖拴,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布燎字,位于F島的核電站,受9級特大地震影響阿宅,放射性物質(zhì)發(fā)生泄漏候衍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一家夺、第九天 我趴在偏房一處隱蔽的房頂上張望脱柱。 院中可真熱鬧,春花似錦拉馋、人聲如沸榨为。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽随闺。三九已至,卻和暖如春蔓腐,著一層夾襖步出監(jiān)牢的瞬間矩乐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留散罕,地道東北人分歇。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像欧漱,于是被迫代替她去往敵國和親职抡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353