서버/Spring
[Spring] Mybatis (Interface생성 및 xml 파일과 Mapping)
피노키오이
2021. 8. 3. 17:01
반응형
참고자료
https://jung-story.tistory.com/121
Mybatis 개념 및 컴포넌트 구성 요소
Mybatis란? Java에서 DB 프로그래밍을 하기 위해서 JDBC가 제공되고 있습니다. JDBC RDB 사용을 위한 다양한 API를 제공하지만, 데이터가 방대하지고 각 데이터들의 관계가 복잡해짐에 따라서 다수의 메
jung-story.tistory.com
개요
이번에는 Spring을 통해 Controller가 Service를 호출하고 그 Service가 DAO를 호출하여 호출된 DAO가 어떻게 Xml 파일과 Mapping이 되는지 알아보도록 하겠습니다.
설명
반환형은 JSON 객체로 하도록 하였으며, Datasource 라는 enum 열거형 파일을 return값에 추가해주는 DAO를 만들어줍니다.
@Repository
@Transactional
public class TestDAO
{
public TestJSON insert(String sqlNameSpace, String sqlNm, TestJSON acJson) throws Exception
{
return this.insert(sqlNameSpace, sqlNm, acJson, null, Datasource.test);
}
}
Service Interface 생성
( Service를 인터페이스로 생성하는것은 나중에 유지보수가 더 좋기 때문입니다.)
public interface CustomBoardService
{
TestJSON custominsertRtnBrd(TestJSON tjson) throws Exception;
}
생성한 Service Interfacer 구현
여기서 custominsert의 값은 위에서 생성한 Mapper Interface의 List명입니다.
@RequiredArgsConstructor
@Service("customboardService")
public class CustomBoardServiceImpl implements CustomBoardService
{
private final TestDAO tDao;
@Override
@Transactional(readOnly = false)
public TestJSON custominsertRtnBrd(TestJSON tjson) throws Exception
{
return tDao.insert("(xml mapper 테그의 namespace와 일치)", "custominsert", tjson);
}
}
Mapper.xml 파일생성
여기서 insert 테그안의 id값은 Mapper Interface 의 List명과 동일하게 해야함.
<?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="Service에서 호출한 dao의 첫번째 파라메터와 일치">
<insert id="custominsert" parameterType= "java.util.HashMap">
Insert into "테이블명"
(ID
,name
,content
)
VALUES ( #{ID}
, #{name}
, #{content}
)
</insert>
</mapper>
이렇게 Spring에서 간단하게 Service가 DAO를 호출하고 그 DAO가 Mapper.xml과 Mapping되는 방법에 대해서 알아보았습니다.
반응형