<![CDATA[ ]]>
이렇게 선언한 후에 안에 문자열을 채워 넣으면, [] 안에 있는 문자는 파싱되지 않고 그대로 문자열로 출력됩니다.
MyBatis에서 mapper 파일은 XML로 작성되어 있고 파싱될 떄 XML 표준으로 파싱됩니다.
SELECT 문에는 조건을 걸어 쿼리를 쓰기 위해 <,>,= 등의 기호를 많이 사용하게 되는데, 이것이 파싱 중에 태그로 인식되거나 하는 등의 문제가 생길 수 있습니다.
<![CDATA[ ]]>
안에 원하는 쿼리문을 선언 한다면, 파싱 되지 않고 그대로 문자열로 인식 시킬 수 있어 이런 문제를 예방할 수 있습니다.
동적 SQL에서는 사용하지는 못하는데, 필요한 특수문자에 한해서만 적용시키면 동적 SQL 에서도 사용이 가능합니다.
public class BoardVO{
private Long bno; //게시글 번호
private String title; //게시글 제목
private String content; //게시글 내용
private STring writer; //게시글 작성자
private LocalDateTIme regDate,modDate //작성일,수정일
}
public interface BoardMapper{
public List<BoardVO> getList(); //전체 리스트 출력
}
<mapper namespace="org.codej.mapper.BoadMapper">
<Select id="getList" resultType="org.codej.domain.BoardVO">
<![CDATA[
SELECT * FROM tbl_board WHERE bno>0
]]>
</Select>
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/root-context.xml"})
@Log4j
public class BoardMapperTests {
@Autowired
private BoardMapper mapper;
@Test
public void testGetList(){
mapper.getList().forEach( board -> log.info(board) );
}
}