반응형
MyBatis ) VO(Value Object)객체 만들지 않고 map 으로 쿼리 결과 받아오기
VO 객체를 만들어 두고 MyBatis 에서 맵핑을 해서 쓴다면 정말 간편하고 쉬운데요,
property 가 적고, 자주 사용하지 않는 객체들도 모두 VO 로 등록하기엔 비 효율적입니다.
마침 팀원분 한 분이 Map 에 맵핑 하는걸 궁금해 하시기도 해서 이번 기회에 Map으로 한번 코드를 작성 해 보았습니다.
package best.gaia.project.dao;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository;
@Repository
public interface RepositoryDao {
public List<Map<String, Object>> selectRepositoryList(int proj_no);
}
repository dao 파일 입니다. 선언만 해주고 마이바티스에서 proxy 구현체 ( daoimpl 의 역할) 을 생성해줍니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="best.gaia.project.dao.RepositoryDao">
<select id="selectRepositoryList" parameterType="int" resultType="java.util.HashMap">
SELECT *
FROM REPOSITORY
</select>
</mapper>
마이바티스 설정 파일인데요, 써놓고 보니 너무 쉬워서 vo 사용을 줄여야 겠다는 생각이 들었습니다.
package best.gaia.project.dao;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import best.gaia.TestWebAppConfiguration;
@RunWith(SpringJUnit4ClassRunner.class)
@TestWebAppConfiguration
public class RepositoryDaoTest {
@Inject
RepositoryDao dao;
@Test
public void testSelectRepositoryList() {
List<Map<String, Object>> repositories = dao.selectRepositoryList(1);
int i = 1;
for(Map<String, Object> repository : repositories ) {
System.out.println(i++ + "번째 저장소");
System.out.println(repository);
}
}
}
바로 테스트 코드를 작성해서 테스트 해 보았습니다.
허무 할 정도로 너무 쉽게 map 을 만들어 줍니다.
꺼내 쓸때 code assist를 받으며 getter 호출을 하는 게 아니기 때문에 조금 더 신경 써야 할 수도 있는데,
단순하게 바로 JSON 형태로 마샬링 해서 보내주는 경우를 생각하면 너무 편합니다.
반응형
'Programming > JPA ⁄ Spring' 카테고리의 다른 글
Mac) Groovy로 Spring boot 어플리케이션 개발해보기. 1) Hello world (0) | 2021.07.08 |
---|---|
스프링부트) Spring Boot 시작하기. (3) | 2021.07.05 |
스프링 websocket 사용시 java.io.IOException: Broken pipe 해결하기. (0) | 2021.06.11 |
MAXIMUM SESSIONS OF 1 FOR THIS PRINCIPAL EXCEEDED 해결하기 (2) | 2021.06.10 |
Eclipse에서 Tomcat 프로젝트 Context Path 변경하기. (0) | 2021.06.06 |