데이터 접근하기

필요한 선수 지식

데이터 접근 기술의 개념에 대해 익숙하다고 가정합니다.

데이터 접근 기술은 어떤 것을 활용하나요?

Project Room은 데이터 접근 기술 중 SQL Mapper인 MyBatis 형식을 지원합니다.

지원되는 언어로는 Java, Node가 있습니다.

  • SQL을 xml을 통해 편리하게 작성할 수 있습니다.

  • 동적 쿼리를 매우 편리하게 작성할 수 있습니다.

DB데이터에 직접 연결할 수는 없나요?

Database에 아직 연결하지 않았다면 DB연결하기를 가서 연결한 후 진행하시면 됩니다.

ProjectRoom 접근기술에 맞는 규격이 있나요?

네, ProjectRoom에서는 Mybatis 형식의 접근기술을 지원하며, 해당 형식은 기본 형상구조가 정해져있습니다.

아래에 ProjectRoom에서 지원하는 언어별 규격을 알아보겠습니다.

중점적으로 볼 부분은 SQL(mapper.xml)과 그 SQL을 사용하는 법을 보시면 됩니다.

Java에서는 크게 3개를 보면 된다.

  • module -> URL mapping을 하는 영역

  • service -> 핵심 로직이 들어가는 영역

  • mapper -> SQL을 구성하는 영역

mapper 파일은 어떻게 만들면 되나요?

mapper 폴더 아래에 xml 기반의 sql을 작성하시면 됩니다.

지켜야 되는 부분이 어느 부분인가요?

우선, 크게 namespace, id, parameter 이 세가지만 기억하시면 됩니다.

사용하실 때는 dao.select("user.selectUserById", {"변수명":값}) 와 같이 사용합니다.

  • namespace는 단위그룹이라고 생각하시면 됩니다.

  • id는 단위그룹 아래 특정 쿼리를 지칭할 수 있게 해주는 값입니다.

  • parameter는 해당 쿼리에서 사용될 매개변수이며, json 타입으로 받고 사용은 #{변수명}과 같이 사용합니다.

동적 쿼리는 어떻게 사용하나요?

동적쿼리의 사용법은 공식사이트를 참고하시면 됩니다.

아래의 기능들 중 필요하신 부분 활용하시면 좋습니다.

  • <if>

  • <choose>, <when>, <otherwise>

  • <trim>, <where>, <set>

  • <foreach>

  • <bind>

  • <include>

mapper를 만들었는데 어떻게 사용하나요?

기본규격
@Service
public class 서비스클래스 {
    private static final Logger logger = LoggerFactory.getLogger(UserService.class);
    CommonDao commonDao;

    @Autowired
    public 서비스클래스(CommonDao commonDao) {
        this.commonDao = commonDao;
    }

    public DataItem getUserById(DataItem param) {
        return commonDao.select("네임스페이스.아이디", param);
    }
}

참고 예

앞서 mapper를 작성하였다면 사용은 위와 같은 형태로 dao 객체를 활용하시면 됩니다.

자세한 dao 객체 사용법은 해당 API를 참고하시면 됩니다.

Last updated