どうもコウタロウです。
今日はタイトルについて。
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()」に変更すればエラーは回避できます!!
コメント