쿼리 수정 중 문제 발생!
제목의 저 오류가 생김
어디서 생겼냐면
데이터 총 개수 구하기
<select id="cnt" resultType="int"> select count(*) from user_table </select> |
회원가입 시 이미 존재하는 id인지 확인하기
<select id="idchk" parameterType="String" resultType="int"> select count(*) from user_table where id=#{id} </select> |
비슷하게 생긴 이 둘을 하나로 합쳐도 괜찮지 않을까 싶어서 수정함
<select id="cnt" parameterType="String" resultType="int"> select count(*) from user_table <where> <if test="id!=null"> id=#{id} </if> </where> </select> |
파이널 때도 잘 써먹은 쿼리.... 그리고 여기서 오류가 뜸
원인
동적 쿼리에서 if문은 파라미터 타입 클래스의 getter를 호출하는 방식인데 String에는 getter 개념이 정의되어있지 않기 때문에 String으로 넘긴 값을 조건으로 달면 저렇게 오류가 난다고 한다
출처는 https://bcdragonfly.tistory.com/10 이 블로그!
해결도 이 블로그를 보고 했음!
해결방법
1. string 값을 dto나 map에 넣어 parameter로 보내기
2. 변수명 대신 value로 바꿔 사용하기
정리하면 if문으로 null 체크를 할 거면 parameterType을 String으로 보내지 말고 dto를 이용하거나 map에 넣거나 하는게 일반적인 방법이라고 함
하지만.. 그렇게 되면 체크할 때마다 새로 dto 객체를 생성해야 하는데 이건 좀 비효율적이지 않나? 하는 생각이 들어서
그냥 쿼리를 합치지 않고 하던대로 따로 사용하기로 결정!
뻘짓 완
'개인 > 정리' 카테고리의 다른 글
데이터 페이징 처리 (0) | 2022.07.19 |
---|---|
ajax 썸네일 출력하기 (0) | 2022.07.14 |
220713 file -> db -> json (0) | 2022.07.13 |
220117 BroadCasting 정리 (0) | 2022.01.22 |
220114 File 내보내기 정리 (0) | 2022.01.16 |