이 문서는 Spring boot와 MYBATIS를 이용하여 여러 행을 업데이트하는 방법을 안내합니다.
Spring Boot에서 MyBatis를 사용할 때, Service
에서는 Mapper
를 호출하여 데이터베이스에 접근합니다.
일반적으로 Service
는 비즈니스 로직을 처리하는 레이어입니다. 이 레이어에서는 Mapper
를 호출하여 데이터베이스에 접근합니다.
Mapper
는 MyBatis에서 SQL 쿼리를 실행하는 객체입니다. Mapper
를 작성하고, Service
에서 Mapper
를 호출하여 데이터베이스에 접근하는 방법은 아래와 같습니다.
UserMapper
인터페이스 작성@Mapper
public interface UserMapper {
List<User> getUsers();
void updateUser(User user);
// 추가적인 메소드 작성 가능
}
UserService
작성@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getUsers() {
return userMapper.getUsers();
}
public void updateUser(User user) {
userMapper.updateUser(user);
}
// 추가적인 메소드 작성 가능
}
UserService
에서는 UserMapper
를 @Autowired
어노테이션을 사용하여 자동으로 주입합니다. UserService
에서는 UserMapper
의 메소드를 호출하여 데이터베이스에 접근합니다.
위와 같이 Service
와 Mapper
를 분리하여 작성하면, Service
는 비즈니스 로직에 집중할 수 있습니다. 또한, Mapper
는 SQL 쿼리를 작성하고 실행하는 역할을 수행합니다. 이를 통해 코드의 가독성과 유지보수성을 높일 수 있습니다.
아래와 같이 UserMapper
인터페이스에 다음과 같은 메소드를 추가하여 여러 행을 업데이트할 수 있습니다.
@Mapper
public interface UserMapper {
List<User> getUsers();
void updateUser(User user);
void updateUsers(List<User> users);
}
updateUsers()
메소드에서는 List<User>
타입의 파라미터를 받아 foreach
구문을 이용하여 여러 행을 업데이트할 수 있습니다.
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public void updateUsers(List<User> users) {
userMapper.updateUsers(users);
}
}
UserService
에서는 updateUsers()
메소드를 호출하여 여러 행을 업데이트할 수 있습니다.