본문 바로가기
JAVA

[JAVA] MyBatis - RowBounds

by Amy IT 2022. 6. 19.

MyBatis에서 RowBounds를 사용하면 전체 레코드에서 원하는 범위의 레코드만을 가져올 수 있게 됩니다. 

 

MyBatis를 사용하기 위한 환경설정과 기본 사용법은 아래 게시글에서 확인할 수 있습니다.

https://amy-it.tistory.com/64

 

[JAVA] MyBatis 시작하기

▶ MyBatis 란? MyBatis(마이바티스)는 SQL 매핑(mapping) 프레임워크입니다. MyBatis는 자바와 데이터베이스를 연동하기 위해 JDBC로 처리하는 상당 부분의 코드와 파라미터 설정 및 결과 매핑을 대신해 줌

amy-it.tistory.com

 

기본 구조는 동일하게 사용하고, Main, Service 클래스, DAO 클래스, Mapper.xml 파일을 중심으로 살펴보겠습니다.

 

 

Main

 

Main에서 시작 위치의 레코드 인덱스 번호와 몇 개의 레코드를 조회할 것인지 지정하여 전달합니다. 인덱스 번호는 0부터 시작합니다. 즉, 아래 예시의 경우 처음 위치부터 3개의 레코드를 조회하게 됩니다.

OracleMyBatisService service = new OracleMyBatisService();
List<Dept> deptList = service.selectTopN(0,3); //idx 0부터 시작, 3개 
for (Dept dept : deptList) {
	System.out.println(dept);
}

 

Service

 

Service 클래스에서는 전달받은 정수값과 함께 session을 DAO 클래스로 전달합니다. 

public List<Dept> selectTopN(int offset, int limit) {
	SqlSession session = MySqlSessionFactory.getSqlSession();
	List<Dept> list = null;
	try {
		list = dao.selectTopN(session, offset, limit);
	} finally {
		session.close();
	}
	return list;
}

 

DAO

 

전달받은 정수값을 이용해 RowBounds를 객체 생성합니다. RowBounds 객체는 offset과 limit 변수를 가지며, offset은 시작 인덱스 번호를, limit은 조회할 레코드의 개수를 의미합니다. selectList 메소드를 호출하며 인자로 SQL id값, 검색어, RowBounds 객체를 전달합니다. 검색어가 필요하지 않아도 생략하면 안 되고 null로 지정해야 합니다.

public List<Dept> selectTopN(SqlSession session, int offset, int limit) {
	List<Dept> list = 
		session.selectList("topN", null, new RowBounds(offset, limit));
	return list;
}

 

Mapper.xml

 

부서 번호를 기준으로 오름차순 정렬하여 모든 데이터를 SELECT한 후, 지정한 RowBounds에 맞게 해당 범위의 데이터만 꺼내오게 됩니다. 

<select id="topN" resultType="Dept">
   select deptno, dname, loc 
   from dept 
   order by 1 asc
</select>

 

10번 부서부터 3개의 부서가 조회됩니다. 

 

 

 

이상으로 MyBatis에서 RowBounds 객체를 어떻게 사용하는지 간략하게 알아보았습니다.

 

 

'JAVA' 카테고리의 다른 글

[JAVA] MyBatis - 동적 SQL  (0) 2022.06.19
[JAVA] MyBatis - HashMap 사용  (0) 2022.06.16
[JAVA] MyBatis 시작하기  (0) 2022.06.15
[JAVA] JDBC - DAO, DTO 패턴  (0) 2022.06.09
[JAVA] JDBC - PreparedStatement  (0) 2022.06.07

댓글