CRUD 쿼리 작성
HR 오라클 계정 내에 있는 countries 테이블과 연동하기 위해 VO를 생성하고
@Data 어노테이션을 달아줍니다.
기초작업이 끝났으니
mapper 에 쿼리를 작성하여 DB와 연결해보겠습니다.
먼저 SELECT 문입니다.
이렇게
mapper안에 select문을 작성했습니다. 바로 JUnit 테스트를 돌려보겠습니다.
package com.ack.test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.ack.mapper.CountriesMapper;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
"file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class MapperTests {
@Autowired
private CountriesMapper CountriesMapper;
@Test
public void getCountriesTest() {
log.info(CountriesMapper.getCountries());
}
}
아래는 테스트 결과 콘솔창입니다.
이렇게 테스트의 성공을 확인했으니 모든 CRUD 쿼리를 지체없이 작성해보겠습니다.
인터페이스를 만들어두고 시작해보겠습니다.
CRUD mapper.xml 전문
<?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="com.ack.mapper.CountriesMapper">
<select id="getCountries" resultType="com.ack.domain.CountriesVO">
SELECT * FROM countries
</select>
<select id="getDetail" resultType="com.ack.domain.CountriesVO">
SELECT * FROM countries WHERE country_id = #{country_id}
</select>
<insert id="insertCountries">
INSERT INTO countries (country_id, country_name, region_id)
VALUES
(#{country_id}, #{country_name}, #{region_id})
</insert>
<update id="updateCountries">
UPDATE countries
SET
country_name = #{country_name},
region_id = #{region_id}
WHERE
country_id = #{country_id}
</update>
<delete id="deleteCountries">
DELETE FROM countries
WHERE country_id = #{country_id}
</delete>
</mapper>
service 생성
package com.ack.service;
import java.util.List;
import com.ack.domain.CountriesVO;
public interface CountriesService {
public List<CountriesVO> getCountries();
public CountriesVO getDetail(String country_id);
public void insertCountries(CountriesVO vo);
public void updateCountries(CountriesVO vo);
public void deleteCountries(String country_id);
}
service 동작을 상속받아 수행할 class 파일도 생성해줍니다.
package com.ack.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ack.domain.CountriesVO;
import com.ack.mapper.CountriesMapper;
@Service
public class CountriesServiceImpl implements CountriesService {
@Autowired
private CountriesMapper mapper;
@Override
public List<CountriesVO> getCountries() {
return mapper.getCountries();
}
@Override
public CountriesVO getDetail(String country_id) {
return mapper.getDetail(country_id);
}
@Override
public void insertCountries(CountriesVO vo) {
mapper.insertCountries(vo);
}
@Override
public void updateCountries(CountriesVO vo) {
mapper.updateCountries(vo);
}
@Override
public void deleteCountries(String country_id) {
mapper.deleteCountries(country_id);
}
}
이제 본격적으로 REST CRUD를 구현할 준비가 끝났습니다.
다음 포스팅에서 구체적으로 다루도록 하겠습니다.