코딩하렴

SPRING-mybatis-Oracle 연결하기 -3

by 으렴



이번 게시글에서는 mybatis를 직접 써 보려고 한다.




src/resources 경로에 mybatis-config.xml 파일을 만든다.


그리고 mappers라는 폴더를 만들고 그안에 또 MemberMapper.xml 파일을 만들어 준다.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
<!-- mybatis-config.xml -->
 
<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
 
</configuration>
 
<!-- MemberMapper.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">
 
<!-- DAO에서 어떻게 이 mapper를 부를 것인지 namespace 정해줌 -->
<mapper namespace="member">
 
    <!-- id는 쿼리문을 무엇으로 보낼 것인지 resultType은 결과물이 무엇인지 -->
    <select id="test" resultType="com.spring.test.Member.DTO.MemberDTO">
 
        select * from member where name='you'
 
    </select>
 
</mapper>
cs




그렇게 한 뒤 위의 코드를 각 xml파일에 추가해서 넣어 준다.


MemberMapper에서 select는 resultType을 DTO로 설정해주었다.


@Repsotory에서 member.test로 부르면 member 매퍼에 해당하는 xml파일에 와서 test에 해당하는 아이디를 가진 쿼리문을 DB에 입력한다.


막상 글로만 보면 모르니까 직접 @Repository에 가서 불러보자!






지난 게시글에서 @Repository로 설정한 MemberDAO_Impl로 간다.




1
2
3
4
5
6
7
@Repository
public class MemberDAO_Impl implements MemberDAO {
 
    @Autowired
    SqlSession sql;
    
}
cs



지난 게시글의 root-context.xml에서 설정 해 놓은 sqlsession을 사용 할 것이다.


sqlsession을 의존 주입하여 이곳에서 부를 것이라고 말해 주는 것과 같다.


이제 sqlsession을 사용해서 쿼리문을 불러보자!


MemberDAO interface로 간다.




1
2
3
4
5
public interface MemberDAO {
    
    public MemberDTO test();
 
}
cs



MemberDTO를 리턴하는 테스트라는 함수를 만들어주고 저장하면 Member_Impl에 빨간 줄이 생긴다.



1
2
3
4
@Override
    public MemberDTO test() {
        return sql.selectOne("member.test"); 
    }
cs




아까 만들어 두었던 mapper의 namespace와 쿼리의 id를 위와 같은 방식으로 불러 리턴 시키면 된다.



그럼 서비스에서 이 함수를 불러보자.




1
2
3
4
5
6
7
8
9
10
11
12
@Service
public class MemberService_Impl implements MemberService{
 
    @Autowired
    MemberDAO dao;
    
    @Override
    public MemberDTO test() {
        // TODO Auto-generated method stub
        return dao.test();
    }
}
cs



마찬가지로 인터페이스에 test함수를 구현 할 것이라고 말해주어야한다.






사진과 같이 각 구현 클래스에서는 구현클래스를 직접 생성해서 부르는 것이 아니라 interface를 부르고


그것을 구현한 클래스에 어노테이션을 붙여 bean으로 만들어서 주입을 시켜준다.


Controller에서도 마찬가지로 똑같이 Service 인터페이스를 의존주입해주어 불러주면 된다.


그럼 컨트롤러에서 calltest.jsp를 부르는 함수로 다시 가서 작성한 쿼리의 결과를 jsp 페이지에 보이게 해보자



1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Controller
public class MemberController {
    
    @Autowired
    MemberService service;
    
    
    @RequestMapping("dbtest")
    public String dbtest(Model model) {
        model.addAttribute("test",service.test());
        return "calltest";
    }
    
}
cs



dbtest함수에 model을 매개변수로 받고 모델에 service.test()를 담아서 jsp페이지로 리턴시키려한다.


이렇게 한다고 해서 바로 뜨는건 아니고 jsp에서 표시를 해 주어야 한다.


addAttribute 할 때 앞의 test는 key이고 콤마 뒤의 값은 value가 된다.




1
2
3
4
5
6
7
<body>
<p>DB TEST 할 곳 입니다</p>
 
<p>${test.id }</p>
<p>${test.name }</p>
 
</body>
cs



아까 jsp에 적은 DB TEST 할 곳입니다 밑에 test안에 있는 id와 name을 출력케 하고


프로젝트를 run 시키면 





매우 깔끔하게 뜬다.


이렇게하면 Oracle-mybatis-Spring 연동 끝!


이런식으로 spring 을 만들면 된다.



깔깔



Database연동이라고 해놓고 거의 뭐 Spring MVC구현이나 마찬가지였던 게시글이다.



'Web > SPRING' 카테고리의 다른 글

spring boot로 jsp 사용하여 만들기  (0) 2019.09.18
SpringBoot 자동 설정  (0) 2019.03.30
SPRING-mybatis-Oracle 연결하기 -2  (0) 2018.12.20
SPRING-mybatis-Oracle 연결하기 -1  (0) 2018.12.19
SPRING 한글 처리하기  (0) 2018.12.18

사이트의 정보

코딩하렴

으렴

활동하기