[Mybatis] LIMIT와 OFFSET 페이징 쿼리 예제
MyBatis에서 LIMIT와 OFFSET을 활용한 페이징 쿼리를 작성하는 예제를 제시해드리겠습니다. 대부분의 데이터베이스 시스템은 페이징을 위해 LIMIT와 OFFSET을 사용할 수 있습니다. 하지만 데이터베이스에 따라 사용법이 조금씩 다를 수 있으니 주의하십시오.
예제: LIMIT와 OFFSET을 사용한 페이징 쿼리
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface BookMapper {
List<Book> getBooksByPage(@Param("limit") int limit, @Param("offset") int offset);
}`
매퍼 XML 파일:
BookMapper.xml
:
<select id="getBooksByPage" resultType="Book">
SELECT * FROM books
LIMIT #{limit} OFFSET #{offset}
</select>`
위의 예제에서는 getBooksByPage
라는 메서드를 정의하여 LIMIT와 OFFSET을 사용한 페이징 쿼리를 실행하고 있습니다. limit
과 offset
은 각각 파라미터로 전달되며, 쿼리 실행 시에 이 값을 사용하여 페이징을 구현합니다.
사용 예제:
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.util.List;
public class PagingExample {
public static void main(String[] args) {
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
.build(PagingExample.class.getResourceAsStream("/mybatis-config.xml"));
try (SqlSession sqlSession = sessionFactory.openSession()) {
BookMapper bookMapper = sqlSession.getMapper(BookMapper.class);
int limit = 10; // 가져올 레코드 수
int offset = 0; // 시작 위치
List<Book> books = bookMapper.getBooksByPage(limit, offset);
for (Book book : books) {
System.out.println("Book: " + book);
}
}
}
}`
위의 예제에서는 limit
와 offset
값을 설정하여 원하는 페이지의 데이터를 가져옵니다. 데이터베이스에 따라 LIMIT
와 OFFSET
이 다르게 표현될 수 있으므로, 사용하는 데이터베이스의 문법에 맞게 수정해야 합니다.