VO 클래스 작성

 

lombok의 @Data를 사용해서 자동으로 getter, setter 등을 생성했다.

@Data
public class BoardVO {
	private Long bno;
	private String title;
	private String content;
	private String writer;
	private Date regDate;
	private Date updateDate;
}

 

Mapper인터페이스 작성

MyBatis의 Mapper를 사용해서 테이블을 조회해보겠다.

 

root-context.xml에서 Mapper 인터페이스의 위치를 알 수 있도록(스캔)

다음 코드를 root-context.xml에 작성한다.

<mybatis-spring:scan base-package="org.zerock.mapper"/>

 

다음으로 인터페이스를 생성한다.

(@Selct를 통해 인터페이스에서 sql문을 작성했다.)

public interface BoardMapper {
 	@Select("SELECT * FROM tbl_board where bno>0")
	public List<BoardVO> getList();
}

 

아래 코드를 사용해서 테스트 해보자.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class BoardMapperTests {
	@Setter(onMethod_ = @Autowired)
	private BoardMapper boardMapper;
	
	@Test
	public void testGetList() {
		boardMapper.getList().forEach(board -> log.info(board));;
	}
}

 

아래와 같은 결과가 나올 것이다.

 

Mapper XML 작성

방금은 인터페이스에 sql문을 작성했다.

하지만 sql과 코드를 분리하기 위해서 sql문은 특정한 xml파일에 작성하는 것이 좋다. 

 

namespace : Mapper 인터페이스의 클래스명 (패키지 이름 포함)

<select>문의 id : Mapper 인터페이스에서 메소드명

CDATA : XML에서 <, >와 같은 문자를 태그로 인식하기 때문에 태그가 아니라는 표시를 해줘야한다.

이를 표시해주기 위해서 CDATA를 사용한다.

resultType : 반환받을 유형 , 여기서는 BoardVO객체로 받았다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="org.zerock.mapper.BoardMapper">
    	<select id="getList" resultType="org.zerock.domain.BoardVO">
    		<![CDATA[
    		SELECT * FROM tbl_board where bno>0
    		]]>
		</select>
    </mapper>

 

XML파일에 sql문을 작성했으므로 인터페이스에서 다음과 같이 @Select문을 지워도 된다.

그리고 위에서 했던 테스트를 다시 한번 해보자. 

public interface BoardMapper {
	public List<BoardVO> getList();
}

 

 

MyBatis와 Mapper의 자세한 내용은 아래 링크를 참조하자.

2021/02/22 - [Spring/코드로 배우는 스프링 웹 프로젝트] - MyBatis의 Mapper 사용하기

 

MyBatis의 Mapper 사용하기

이전에 공부한것 처럼 SqlSessionFactory를 사용해서 Connection을 얻어 jdbc코딩이 가능하다. 하지만 좀 더 편하게 작업하기 위해서 sql문을 위한 설정을 분리해주는게 낫다. 이를 위해서 MyBatis에 Mapper를

web-developer-backend.tistory.com

 

+ Recent posts