SpringFramework 을 이용하다보면 데이터베이스 액세스를 위해서 MyBatis 를 사용하곤 한다. SQL 매퍼라고 불리기도 하는 것인데, 이를 이용하면 손쉽게 자바 코드와 SQL 문을 분리해줄 수 있을뿐만 아니라 MyBatis 에서 제공하는 여러가지 추가적인 기능을 이용해 데이터베이스를 좀 더 유연하게 사용할 수 있다. DAO 보통 MyBatis 를 이용할대는 DAO 를 구조를 사용하곤 했다. Data Access Object 라고 불리는 것으로 말 그대로 데이터 접근을 위한 객체로서 sqlSession 객체를 이용해 데이터베이스 조회만 전담하는 객체다. 이 구조는 인터페이스와 그것을 구현한 구현체 클래스가 있어야 한다. 이를 위해서 […]
Spring framework
MyBatis Error – The content of elements must consist of well-formed character data or markup.
MyBatis 의 Mapper XML 파일에서 다음과 같은 오류가 발생 했다. “The content of elements must consist of well-formed character data or markup.” 이는 SQL 연산자인 <, =, > 와 같은 엔터티가 MyBatis 문법과 혼동되서 나오는 문제다. 이럴때는 CDATA 를 적용해주면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<select id="getCheckInDay" resultType="CheckInDayVO"> <![CDATA[ SELECT dayofweek, DATE(start_date) AS day, start_date, end_date, TIMEDIFF(end_date, start_date) AS worktime, CASE WHEN end_date is null OR TIMESTAMPDIFF(MINUTE,start_date,end_date) < 160 THEN TIMESTAMPDIFF(MINUTE,start_date,now()) ELSE TIMESTAMPDIFF(MINUTE,start_date,end_date) END workminute, CASE WHEN end_date is null OR TIMESTAMPDIFF(MINUTE,start_date,end_date) < 160 THEN (TIMESTAMPDIFF(MINUTE,start_date,now())/480)*100 ELSE (TIMESTAMPDIFF(MINUTE,start_date,end_date)/480)*100 END workpercentage FROM checkin WHERE username = #{username} AND DATE(start_date) = #{today} ]]> </select> |
이렇게하면 에러를 없앨 수 있다.