MyBatis3 [MyBatis] <![CDATA[ ]]> 사용해서 부등호 처리하기 MyBatis를 사용하다보면 비교연산자(부등호 등)를 사용해서 쿼리문을 작성할 때 만날 수 있는 ⚠️ 에러이다. The content of elements must consist of well-formed character data or markup. 비교연산자를 태그로 인식해서 발생하는 에러이다!이 에러를 피하는 방법은 두가지가 있다.✌️ 1. CDATA 사용하기 CDATA가 파싱되지 않고 문자열을 문자 그대로 인식할 수 있도록 설정해준다. CDATA는 로 부등호나 쿼리문을 감싸주면 된다. /* 부등호에 사용하기 */SELECT * FROM TB_ORDER WHERE ORDER_DT #{calFrom} /* 쿼리문에 사용하기1 */ SELECT * FROM TB_ORDER /* 쿼리.. 2025. 3. 6. [MyBatis] 샵#{} 과 달러${} 차이 #{ }: PreparedStatement를 만들어서 파라미터를 바인딩 파라미터들은 SQL문에서 ?으로 표시되며 구문 분석을 할 때 하나의 필드 값으로 인식한다.따옴표로 묶은 하나의 값으로 인식한다. SELECT * FROM USER WHERE ID = #{파라미터명} ❗${} 보다는 보안상 더 안전해 많이 사용된다! 또한 캐시에 담아 재사용하기 때문에 반복적인 쿼리인 경우라면 더 효율적이다👍 ${ }문자열 그대로 SQL문에 들어간다.#{}이 PreparedStatement와 비슷하다면 ${}는 Statement와 비슷하다. 🚨 ${}에는 싱글 쿼테이션이 붙으면 실행이 안된다! 싱글 쿼테이션을 붙여야하는 경우에는 바깥에 붙여줘야한다. ➡️➡️ '${id}'하지만 이렇게 하면 보안상 문.. 2024. 12. 9. [MyBatis] if 조건절 문자열 비교하기 마이바티스에서 조건문에서 문자열을 비교하여 조회 조건을 추가하려는 SQL문을 짰다. AND (USE_YN = 'Y' OR USE_YN IS NULL) AND USE_YN = 'N' 위 코드처럼 짜고 실행하면 NumberFormatException 에러를 만날 수 있다... java.lang.NumberFormatException: For input string: "Y” 💡'Y' 를 문자열로 인식하는 것이 아니라 Char 타입으로 인식해서 발생하는 오류라고 한다. 조건절에서 문자열을 비교하고 싶은 경우에는 작은 따옴표(' ')가 아닌 큰 따옴표 (" ") 를 사용해야한다. 작은 따옴표와 큰따옴표의 위치를 바꾸는 간단한 방법도 있다. 하지만 프로젝트의 통일성을 위해 큰 따옴표의 HTM.. 2024. 11. 11. 이전 1 다음