[Spring] MyBatis에서 <![CDATA[ ]]> 사용

윤재열·2022년 4월 10일
0

Spring

목록 보기
50/72

CDATA 란,

  • Character DATA, 즉 문자열 데이터를 말한다.

사용법

  • <![CDATA[ ]]> 이렇게 선언한 후에 안에 문자열을 채워 넣으면, [] 안에 있는 문자는 파싱되지 않고 그대로 문자열로 출력됩니다.

  • MyBatis에서 mapper 파일은 XML로 작성되어 있고 파싱될 떄 XML 표준으로 파싱됩니다.

  • SELECT 문에는 조건을 걸어 쿼리를 쓰기 위해 <,>,= 등의 기호를 많이 사용하게 되는데, 이것이 파싱 중에 태그로 인식되거나 하는 등의 문제가 생길 수 있습니다.

  • <![CDATA[ ]]>안에 원하는 쿼리문을 선언 한다면, 파싱 되지 않고 그대로 문자열로 인식 시킬 수 있어 이런 문제를 예방할 수 있습니다.

  • 동적 SQL에서는 사용하지는 못하는데, 필요한 특수문자에 한해서만 적용시키면 동적 SQL 에서도 사용이 가능합니다.

예시

  • src/main/jsva/org.codej.domain/BoardVO
public class BoardVO{

   private Long bno;	//게시글 번호
   private String title;	//게시글 제목
   private String content;	//게시글 내용
   private STring writer;	//게시글 작성자
   private LocalDateTIme regDate,modDate	//작성일,수정일
   
   }
  • src/main/java/org.codej.mapper/BoardMapper
public interface BoardMapper{

	public List<BoardVO> getList();	//전체 리스트 출력
    
    }
  • src/main/resources/org/codej/mapper/BoardMapper.xml
<mapper namespace="org.codej.mapper.BoadMapper">
  
  <Select id="getList" resultType="org.codej.domain.BoardVO">
    <![CDATA[ 
		SELECT * FROM tbl_board WHERE bno>0
	]]>
  </Select>
  • src/test/java/org.codej.mapper/BoardMapperTest.java
@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) );
}
}

profile
블로그 이전합니다! https://jyyoun1022.tistory.com/

0개의 댓글