Caused by: org.xml.sax.SAXParseException: 요소 콘텐츠는 올바른 형식의 문자 데이터 또는 마크업으로 구성되어야 합니다.
Caused by: org.xml.sax.SAXParseException: 요소 콘텐츠는 올바른 형식의 문자 데이터 또는 마크업으로 구성되어야 합니다.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:178)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
Mybatis로 쿼리 작성 시 위와 같은 에러가 발생했습니다. 발생원인 및 해결방법에 대해서 알아봅시다.
Mybatis xml 설정 파일에서 부등호( < > )를 태그로 인식해서 발생하는 오류입니다.
<select id="getUserList" resultType="userModel">
SELECT
*
FROM user
WHERE 1 = 1
AND uid > 5
AND uid < 9
</select>
위의 질의문은 SQL툴에서 지극히 정상입니다만, Mybatis xml 파일에서는 AND uid < 9 에서 '<'를 부등호로 인식하여 파싱 시 오류가 발생합니다.
방안1. 부등호를 <![CDATA[ ]]>감싼다.
<select id="getUserList" resultType="userModel">
SELECT
*
FROM user
WHERE 1 = 1
AND uid > 5
AND uid <![CDATA[ < ]]> 9
</select>
방안2. 쿼리문 전체를 감싼다.
<select id="getUserList" resultType="userModel">
<![CDATA[
SELECT
*
FROM user
WHERE 1 = 1
AND uid > 5
AND uid < 9
]]>
</select>
[MYSQL] Deadlock found when trying to get lock 원인 및 해결방안 (0) | 2024.12.05 |
---|---|
[MYSQL] 접속에러 (10061/2003) 원인 및 해결방법 (1) | 2024.12.04 |
[MYSQL] sql 오류 (1136) column count doesn't match value count at row 1 원인 (0) | 2022.05.09 |