ibatis에서 특수문자 처리

Jongwon Lee·2023년 1월 17일
0

ibatis에서 $ 특수문자는 예약된 문자이다.
보통 쿼리를 xml 에 작성하기 때문에 xml 에서 처리하지 못하는 문자들(&,',",<,>,%...)은 쿼리 작성 시 로 감싸서 처리하면 해결이 된다.
하지만 $ 문자는 위 처럼 감싸도 해결되지 않는데 쓰고 싶다면 JAVA단에서 치환을해서 사용하면 되지만 replaceAll 을 사용 할 경우 Illegal group reference Error 를 발생하게 된다.

String str = "ibatis에서 $ 문자 사용하기.";
String result = java.util.regex.Matcher.quoteReplacement(str);
// result : ibatis에서 \$ 문자 사용하기.

역슬래시 문자가 문제가 되는 경우 쿼리 단에서 치환을 하면 된다.

위의 방법은 역슬래시에도 역슬래시가 붙는다는 걸 알게 되었다.
역슬래시 입력해도 역슬래시역슬래시 의 결과가 된다는 것인데 다음과 같이 사용해도 된다.

String str = "ibatis에서 $ 문자 사용하기.";
str.replaceAll("[$]", "\\\\\\$")
// result : ibatis에서 \$ 문자 사용하기.

이 방법은 $ 만 치환하는 것으로 역슬래시는 영향받지 않는다.

0개의 댓글