자바 애플리케이션을 개발할 때 데이터 선택을 위한 다양한 방법을 사용할 수 있다.
특히, 데이터베이스와 상호작용에서 자주 사용하는 SelectList와 SelectOne은 중요한 역할을 한다.
이 블로그에서는 SelectList와 SelectOne의 개념, 사용법, 그리고 실습 예제를 통해 이해해보겠다.
1 SelectList
SelectList는 데이터베이스에서 여러 행(row)의 데이터를 선택하여 리스트 형태로 반환하는 방법이다.
일반적으로 SQL 쿼리를 사용하여 데이터를 조회하고, 결과를 리스트로 반환한다. 자바에서는 주로
MyBatis, JPA와 같은 ORM(Object-Relational Mapping) 도구를 사용하여 SelectList 기능을 구현한다.
1 - 1 Mybatis에서 SelectList 사용하기
MyBatis는 자바 객체와 SQL데이터베이스 간의 매핑을 도와주는 프레임워크 이다.
MyBatis를 사용하여 데이터베이스에서 다수의 행을 조회하는 예제를 살펴본다.
1 - 1 Mapper XML
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectAllUsers" resultType="com.example.domain.User">
SELECT id, name, email FROM users
</select>
</mapper>
1 - 1 Mapper 인터페이스
package com.example.mapper;
import java.util.List;
import com.example.domain.User;
public interface UserMapper {
List<User> selectAllUsers();
}
1 - 1 서버 클래스
package com.example.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.mapper.UserMapper;
import com.example.domain.User;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getAllUsers() {
return userMapper.selectAllUsers();
}
}
위 예제에서 SelectAllUsers 메서드는 데이터베이스의 모든 사용자 데이터를 조회하여 List로 반환 한다.
2 SelectOne
selectOne은 데이터베이스에서 단일 행(row)의 데이터를 선택하여 객체 형태로 반환하는 방법이다.
일반적으로 SQL 쿼리를 사용하여 하나의 행을 조회하고, 결과를 객체로 반환한다.
SelectOne은 주로 단일 레코드를 조회할 때 사용된다.
2 - 1 MyBatis에서 SelectOne 사용하기
MyBatis를 사용하여 데이터베이스에서 단일 행을 조회하는 예제를 살펴본다.
2 - 1 Mapper XML
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectUserById" parameterType="int" resultType="com.example.domain.User">
SELECT id, name, email FROM users WHERE id = #{id}
</select>
</mapper>
2 - 1 Mapper 인터페이스
package com.example.mapper;
import com.example.domain.User;
public interface UserMapper {
User selectUserById(int id);
}
2 - 1 서비스 클래스
package com.example.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.mapper.UserMapper;
import com.example.domain.User;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User getUserById(int id) {
return userMapper.selectUserById(id);
}
}
위 예제에서 SelectUserById 메서드는 주어진 ID에 해당하는 사용자 데이터를 조회하여 User 객체로 반환한다.
3 SelectList와 SelectOne 비교
기능 | SelectList | SelectOne |
반환 타입 | List <T> | T <단일 객체> |
사용 상황 | 여러 행을 조회해야 할때 | 특정 조건에 맞는 단일 행을 조회해야 할 때 |
예제 SQL | SELECT * FROM users | SELECT * FROM users Where id = #{id} |
주의 사항 | 대량 데이터 조회 시 메모리 사용량 고려 필요 | 결과가 없을 경우 null 반환 가능 |
4 실습 예제
이번에는 MyBatis를 사용하여 SelectList와 SelectOne을 모두 사용하는 예제를 만들어 보겠다.
예제에서는 사용자를 조회하는 기능을 구현한다.
4 User 도메인 클래스
package com.example.domain;
public class User {
private int id;
private String name;
private String email;
// Getters and Setters
}
4 Mapper XML
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectAllUsers" resultType="com.example.domain.User">
SELECT id, name, email FROM users
</select>
<select id="selectUserById" parameterType="int" resultType="com.example.domain.User">
SELECT id, name, email FROM users WHERE id = #{id}
</select>
</mapper>
4 Mapper 인터페이스
package com.example.mapper;
import java.util.List;
import com.example.domain.User;
public interface UserMapper {
List<User> selectAllUsers();
User selectUserById(int id);
}
4 서비스 클래스
package com.example.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.mapper.UserMapper;
import com.example.domain.User;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getAllUsers() {
return userMapper.selectAllUsers();
}
public User getUserById(int id) {
return userMapper.selectUserById(id);
}
}
4 컨트롤러 클래스
package com.example.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import com.example.service.UserService;
import com.example.domain.User;
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@GetMapping("/users/{id}")
public User getUserById(@PathVariable int id) {
return userService.getUserById(id);
}
}
결론
이 블로그에서는 자바에서 SelectList와 SelectOne을 이해하고 사용하는 방법을 살펴보았다.
SelectList는 여러 행의 데이터를 리스트 형태로 반환하고, SelectOne은 단일 행의 데이터를 객체 형태로 반환한다.
이 두 가지 방법을 적절히 활용하면 효율적인 데이터베이스 조회 기능을 구현할 수 있다.
'JAVA > Java기초' 카테고리의 다른 글
Jackson 라이브러리에서 @JsonProperty(index)를 사용하여 JSON 배열 순서 제어하기 (0) | 2024.06.14 |
---|---|
자바에서 Map, List 이해하기 (0) | 2024.05.28 |
배열 ( Array) (0) | 2023.09.24 |
프로그래밍 3대 요소 (0) | 2023.07.29 |
JVM과 자바의 구동방식 (0) | 2023.07.24 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!