-
mybatis - String, Char 변수 값에 대해프로그래밍/Mybatis 2021. 5. 19. 22:18
뉴딜 일자리 교육을 받으면서 처음으로 스프링 MVC구조에 대해서 공부하고 페이지를 만들어 보고 있다.
사실 이전 AA분이 스프링을 커스터마이징 했기 때문에 정통 스프링 하고는 조금 차이가 있다고 이야기를 들었다.
아무튼 작업하던 도중 Java에서 mybatis로 넘겨준 변수가 매퍼단에서 계속 인식되지 않아 원하는 대로 쿼리가
흘러가지 않았고 머리를 엄청 싸매던 도중 옆에 있는 형이 이거 아닐까하고 해서 바꿨는데 됐다.
이제 그 점을 이야기해보려고 한다.
성공했던 쿼리 2번째 행에보면 싱글쿼터로 15를 감쌌다. 인덴트가 안맞는건 오류같다. 자바에서 넘겨준 state라는 변수는 한자리의 String 값을 가지고 있다. 이 폼과 똑같은 폼으로 다른 페이지를 작업했고
문제가 없었기에 문법 또한 똑같이 썼다. 그러나 달랐던 점은 이전 폼은 변수값이 두 자리였다는 것이고 이번에는
한자리의 값인 것이다. 안되는 것이 맞았던 것이다. 자바에는 글자를 처리하는 타입으로 String과 char라는 타입이 있다.
그것을 간과하고 코딩을 했던 것이다. 자바로 프로젝트를 해본 적도 없고 JSTL이나 JSP나 mybatis을 사용해 몇 주 만에
스프링으로 페이지를 구현하려니 사소한 문법에서 실수를 하게 된것이다. 이걸로 하루 반을 날렸는데...
수정전 실수했던 쿼리문 2행의 싱글 쿼터를 보면된다. 2행의 '7'이 String이 아니라 char의 7로 받아들였기 때문에 내가 던진 state의 "7"이 인식되지 않고 when절을 무시하고
지나가버렸던 것이다. 집에가면서 블로그를 찾아보니 나와 같은 문제를 짚어주는 블로그를 발견 할 수 있었다.
웬만하면 특별하게 char를 사용하지 않는 이상 웬만하면 더블 쿼터를 쓰라는 글이 보였고 나처럼 싱글쿼터로 사용하는
경우는 자제해야할 표현법이라고 한다. 내가 참고했던 블로그에 자세하게 설명이 되어있다.
[Mybatis] 동적쿼리 (if test) 문자열처리
Mybatis if test 문자열처리 동적쿼리(dynamic sql)에서 많이 사용되는 Mybatis if test 에서의 문자열 처리. ※ java 문법과 동일하다고 보면 된다. 즉 문자열 비교를 위해 연산자 사용을 해선 안되고 equals 함
developyo.tistory.com
728x90반응형LIST