1. openSession(): 마이바티스 설정 파일의 설정을 그대로 사용하는 바이바티스 객체 생성
2. openSession(boolean autoCommit): 마이바티스 설정을 그대로 사용하되 자동 커밋 여부를 변경함
3. openSession(Connection connection) : 마이바티스 연결 정보를 갖는 커넥션 타입 객체를 피라미터로 전달해서 마이바티스 객체 생성 : 만들어진 객체만큼 연결 객체가 갖는 여러 정보를 생성 시점에 설정 가능 : 연결 정보를 직접 사용하기 때문에 "마이바티스와 별도로 트랜잭션 제어 가능"
2번의 경우,association 태그 내에서 resultMap에 지정한 형태로 결과 값을 담게 된다.
도메인 관계
[User] 1:1 [Board] [Apply] N:1 [Board]
@Data public class User { private Long id; pirvate String name; }
@Data public class Board { private Long id; private String name; private User user; // has one relation ( association ) private List<Apply> apply; // has many relation ( collection ) }
public class Apply { private Long id; private Board board; // has one relation ( association ) private User user; // has one relation ( association ) }
mybatis:
config: mybatis-config.xml // config 위치 : static 바로 아래
type-aliases-package: kia.com.mybatistest.model // dao,dto가 위치한 곳
mapper-locations: mybatis/mapper/*.xml // mapper를 위한 xml 파일이 위치한 곳 ( static 아래가 아닌 resources 아래 )
### Mapper interface 작성
@Repository
@Mapper
public interface UserMapper {
List<UserDto> getAllUserDataList();
}
public interface UserServiceInterface {
public List<UserDto> getAllUserDataList();
}
### Service implement 작성
@Service
@RequiredArgsConstructor
public class UserService implements UserServiceInterface {
private final UserMapper userMapper;
@Override
public List<UserDto> getAllUserDataList() {
return userMapper.getAllUserDataList();
}
}
### Test Controller 구성
@RequiredArgsConstructor
@RestController
public class MemberTestController {
private final UserService userService;
@GetMapping("/user/test")
public List<UserDto> getAllDataList() {
return userService.getAllUserDataList();
}
}