[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을 사용한 페이징 쿼리를 실행하고 있습니다. limitoffset은 각각 파라미터로 전달되며, 쿼리 실행 시에 이 값을 사용하여 페이징을 구현합니다.

사용 예제:

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);
            }
        }
    }
}` 

위의 예제에서는 limitoffset 값을 설정하여 원하는 페이지의 데이터를 가져옵니다. 데이터베이스에 따라 LIMITOFFSET이 다르게 표현될 수 있으므로, 사용하는 데이터베이스의 문법에 맞게 수정해야 합니다.