[Mybatis] 결과 제한(Limit) 예제
MyBatis에서 결과 제한 (LIMIT)을 사용하려면 데이터베이스 종류에 따라 다른 방법을 사용해야 합니다. 아래에서는 MySQL과 Oracle 데이터베이스에 대한 결과 제한 예제를 제공합니다.
MySQL에서 결과 제한 예제:
MySQL에서는 LIMIT 절을 사용하여 결과를 제한할 수 있습니다.
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
<select id="getLimitedUsers" resultType="User">
SELECT * FROM users
LIMIT #{limit}
</select>
</mapper>`
public class Main {
public static void main(String[] args) {
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession sqlSession = sessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 결과 제한 값을 파라미터로 전달
Map<String, Integer> paramMap = new HashMap<>();
paramMap.put("limit", 10);
// getLimitedUsers 메서드 호출
List<User> limitedUsers = userMapper.getLimitedUsers(paramMap);
System.out.println("Limited Users: " + limitedUsers);
}
}
}`
Oracle에서 결과 제한 예제:
Oracle 데이터베이스에서는 ROWNUM을 사용하여 결과를 제한할 수 있습니다.
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
<select id="getLimitedUsers" resultType="User">
SELECT * FROM (
SELECT * FROM users
WHERE ROWNUM <= #{limit}
) WHERE ROWNUM > 0
</select>
</mapper>`
public class Main {
public static void main(String[] args) {
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession sqlSession = sessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 결과 제한 값을 파라미터로 전달
Map<String, Integer> paramMap = new HashMap<>();
paramMap.put("limit", 10);
// getLimitedUsers 메서드 호출
List<User> limitedUsers = userMapper.getLimitedUsers(paramMap);
System.out.println("Limited Users: " + limitedUsers);
}
}
}`
위의 두 예제에서는 LIMIT
를 사용하여 결과를 제한하는 방법을 보여주고 있습니다. 데이터베이스 종류에 따라 SQL 문법이 다를 수 있으므로 사용하는 데이터베이스에 맞게 쿼리를 작성해야 합니다.