[Mybatis | 오류해결] 요소 콘텐츠는 올바른 형식의 문자 데이터 또는 마크업으로 구성되어야 합니다
1. 오류
Cause: org.xml.sax.SAXParseException; lineNumber: 424; columnNumber: 95; 요소 콘텐츠는 올바른 형식의 문자 데이터 또는 마크업으로 구성되어야 합니다.
또는
Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 424; columnNumber: 95; 요소 콘텐츠는 올바른 형식의 문자 데이터 또는 마크업으로 구성되어야 합니다.
2. 발생 원인
MyBatis 사용을 위한 .xml 파일에서 부등호 사용 시(<, >) 발생하는 에러
예시)
SELECT
CUST_NO
FROM CUSTOMER
WHERE GROUP_ID = T1.CGROUP_ID AND ROWNUM < 2
. . .
생략
3. 해결 방법
(1)단일 처리
-부등호를 <![CDATA[ '부등호' ]]> 이 안에 넣는다.
예시)
SELECT
CUST_NO
FROM CUSTOMER
WHERE GROUP_ID = T1.CGROUP_ID AND ROWNUM <![CDATA[ < ]]> 2
. . .
생략
(2)다중 처리
-하나의 쿼리에 여러 개의 부등호가 들어가야 하거나, 부등호 상관없이 작업을 진행해야 할 때에는 sql 전체를
<![CDATA[ ]]>로 감싼다.
예시)
=> CDATA 안에 부등호가 없어도 상관없음
끝.
UPDATE CMM_BBS_POST /* [com.symc.sdss.cmm.board.service.dao.generalBoard.updateLikeCnt] */
SET LIKE_CNT = (SELECT (NVL(MAX(TO_NUMBER(LIKE_CNT)), 0) + 1) FROM CMM_BBS_POST WHERE BBS_ID = #{bbsId} AND NTT_ID = #{nttId})
WHERE BBS_ID = #{bbsId}
AND NTT_ID = #{nttId}
]]>
UPDATE CMM_BBS_POST /* [com.symc.sdss.cmm.board.service.dao.generalBoard.updateLikeCnt] */
SET LIKE_CNT = (SELECT (NVL(MAX(TO_NUMBER(LIKE_CNT)), 0) + 1) FROM CMM_BBS_POST WHERE BBS_ID = #{bbsId} AND NTT_ID = #{nttId})
WHERE BBS_ID = #{bbsId}
AND NTT_ID = #{nttId}
]]>