티스토리 뷰

반응형

한동안 JPA로 개발을 하다가 이직하며 오랜만에 mybatis로 개발을 하게 됐다. 

기존 레거시 소스를 수정하는 부분이 있었는데 수정 후 아래와 같은 오류가 나타났다.

mybatis invalid comparison: java.util.ArrayList and java.lang.String

왜 발생했을까.. 소스는 이런 형태이다.

 

변경 전 소스

<if test='"itemList != null and itemList != ""'>

   AND ITEM_STATUS IN (${itemList})

<if>

 

변경 후 소스

<if test='"itemList != null and itemList != ""'>

   AND ITEM_STATUS IN

   <foreach collection="itemList" item="item" open="(" separator="," close=")">

       #{item}

   </foreach>

<if>

itemList는 예전에는 String 타입으로 데이터를 A,B 이런식으로 강제로 넣어 줬었다.

이번에 소스를 수정하게 되며 기존에 java소스단에서 String으로 받던 것을 ArrayList로 받도록 하여 mybatis에서 foreach로 동작하도록

수정 하였다.

원인을 찾는데 다행 스럽게도 그렇게 오래 걸리지는 않았지만 정말 창피하다..

mybatis invalid comparison: java.util.ArrayList and java.lang.String 바로 에러에 답이 있었다..


Collection이기 때문에 itemList는 "" 과 비교가 되지 않는다...아.... comparison... List and String.. 하..

그리하여 itemList.size != 0 으로 수정..

간단하게 생각하여 위에 if문은 제대로 보지 못했던 내 탓이다.. 기존 소스를 수정할 일이 생긴다면 더 자세히 봤어야 했는데 하..

오늘도 이렇게 반성하며 알아갈 수 있어서 다행이다.

반응형

'DB > RDB' 카테고리의 다른 글

MySQL의 격리 수준  (0) 2022.05.08
[ORACLE] multiple row update  (0) 2019.10.24
[MS-SQL] Begin Tran  (0) 2019.06.13
[MSSQL] multiple row update  (0) 2019.05.28
[MSSQL] 다른 데이터베이스 데이터 복사  (0) 2019.05.17
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함