フリーランス チャレンジ!!

フリーランス チャレンジ!!

週休4日制に俺はなる!

【解決方法】Mybatis "if test"で1文字の文字列がNumberFormatExceptionエラー発生!!

f:id:ksakae1216:20170710223937p:plain

どうもコウタロウです。

 

今日はタイトルについて。

 

 

NumberFormatExceptionエラー

MybatisはSQLをXMLファイルに記載できるのでJavaクラスではビジネスロジックを記載し、SQLはXMLファイルへと分離でき慣れると仲々使いやすく気に入っています。

MyBatis – MyBatis 3 | イントロダクション

 

そのMybatisではSQLを記載するXMLファイルの中にif文やfor文(foreach)などの分岐も記載することができます。

 

※if文の例(8行目と11行目)

gistc3abbc6e7bb14ad3c6e77d3f6d7c9a51

 

SQLを実行する時に渡す変数valが「なし('')」か「A」か「B」の場合、9行目10行目も

実行するようになっています。

 

一見、何の問題も無さそうですが、これを実行すると「'A'」の部分で「NumberFormatException」が発生します。

 

解決方法

原因は不明ですが、1文字の文字列をシングルクォートで括っても、Mybatisは数値と認識して、数値変換しようとしてエラーが発生する流れです。

 

では、どうすればいいかというと「toString()」してあれればOKです!!

gistae82147000e88112c65f78b662b76e38

 

8行目の「'A'」と「'B'」を「'A'.toString()」、「'B'.toString()」に変更すればエラーは回避できます!!