반응형

참고자료

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되는 방법에 대해서 알아보았습니다.

 


 

반응형
  1. 장병우 2022.02.17 20:25

    혹시 강의 어떤걸 들으셧나요?

+ Recent posts