WEB/Spring

[MyBaits]Mapper의 쿼리 실행 후 조회 데이터의 개수를 가져오는 방법

MoonSta 2023. 8. 8. 09:46

 Spring 프로젝트를 진행할 때 비즈니스 로직에서 mapper의 쿼리를 호출할 때 조회된 행의 개수가 필요한 경우가 있다. 이때 개수를 가져오는 방법에 대해 알아보자.


조회된 행의 개수 가져오는 방법

가장 간단한 방법은 다음과 같습니다.

 

<mapper namespace="com.example.UserMapper">
    <!-- 사용자 테이블의 모든 데이터 개수를 조회하는 쿼리 -->
    <select id="getUserCount" resultType="int">
        SELECT COUNT(*) FROM users;
    </select>
</mapper>

 

'SELECT COUNT( * ) ' 쿼리를 실행하여 조회된 데이터의 개수를 얻는 방법입니다. 이제  Mapper를 작성했으니 이를 호출하는 Java 코드를 작성해 보도록 하겠습니다.

 

// Java 코드에서 MyBatis 사용
public interface UserMapper {
    int getUserCount();
}

// 호출 예시
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int userCount = userMapper.getUserCount();
System.out.println("사용자 데이터 개수: " + userCount);

 

이러한 방식으로 필요한 데이터의 수를 Mapper로부터 받아올 수 있습니다. 하지만 이러한 방법 이외에도 조회된 데이터의 개수를 가져올 수 있는 방법이 있습니다. 바로 Mapper의 메서드를 활용하는 것입니다. List를 반환하는 Mapper의 메서드를 작성하고, Java에서는 반환되는 List의 크기로 데이터의 개수를 확인합니다. 방법은 다음과 같습니다.

 

public interface UserMapper {
    List<User> getAllUsers();
}

 

위와 같이 List를 반환하는 Mapper의 메서드를 작성하였습니다. 이제 해당 메서드를 호출하는 Java 코드를 작성해 보도록 하겠습니다.

 

SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = userMapper.getAllUsers();
int userCount = userList.size();
System.out.println("사용자 데이터 개수: " + userCount);

 

위와 같은 방식으로 조회 결과를 리스트로 반환하여 Java에서 반환된 리스트의 크기를 구할 수 있습니다. 조회된 행의 개수를 반환하는 두 가지 방법을 말씀드렸습니다. 프로젝트의 특성과 요구사항에 맞게 사용하시면 될 것 같습니다.

 

감사합니다.