본문 바로가기

학원/스프링-학원

MyBatis

728x90

쿼리를 별도로 뽑아내는 기능을 추가

 

pom.xml에 추가

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>


<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>

<!-- JDBC Template -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>

 

servlet-context.xml에 추가

<beans:bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></beans:property>
<beans:property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></beans:property>
<beans:property name="username" value="scott"></beans:property>
<beans:property name="password" value="tiger"></beans:property>
</beans:bean>

<beans:bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
<beans:property name="dataSource" ref="/dataSource"></beans:property>
<beans:property name="mapperLocations" value="classpath:com/javalec/spring_mvc_board_mybatis/dao/mapper/*.xml"></beans:property>
</beans:bean>

<beans:bean class="org.mybatis.spring.SqlSessionTemplate" id="sqlSession">
<beans:constructor-arg index="0" ref="sqlSessionFactory"></beans:constructor-arg>
</beans:bean>

 

쿼리만 따로 넣고, DAO에서 찾아감

 

 

- xml 안에 쿼리를 넣어두고, 컨트롤러에서 가져옴

 

<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.javalec.spring_test_member_mybatis.dao.IMemDao">

</mapper>

 

위와 같은 형식으로 Dao.xml 작성

 

MVC_BOARD를 MyBatis를 사용해서 바꾼 것

service 파일들을 사용하지 않고 컨트롤러에서 바로 dao로 연결함. dao도 인터페이스로 생성하고, 쿼리문은 따로 xml파일에 적어둠.

xml파일에서 쿼리에 따라서 결과를 가져오고, 이를 resultType 혹은 resultMap으로 원하는 형태로 가져옴. 여기서는 BDto의 형태로 가져옴 - 단 이거는 결과 값을 가져오는 것으로 조회할 때 사용하고, insert, delete 같은 것에서는 필요 없음

 

 

컨트롤러

 

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*서비스 사용하지 않고 바로 다오로 연결시키는 방식 사용*/
@Controller
public class BController {
    @Autowired
    private SqlSession sqlSession;
    
    @RequestMapping("/list")
    public String list(Model model) {
        
        //Dao로 바로 이동
        IBDao dao = sqlSession.getMapper(IBDao.class);
        //결과값을 받아서 모델에 저장하고 뷰로 이동
        model.addAttribute("list",  dao.list());
        
        return "list";
    }
    @RequestMapping("/write_view")
    public String write_view() {
        return "write_view";
    }
    
    @RequestMapping("/write")
    public String write(HttpServletRequest request, Model model) {
        
        IBDao dao = sqlSession.getMapper(IBDao.class);
        //write_view에서 작성한 값들을 여기에서 받아줌
        dao.write(request.getParameter("bName")
                , request.getParameter("bTitle")
                , request.getParameter("bContent"));
        
        return "redirect:list";
    }
    
    @RequestMapping("/content_view")
    public String content_view(HttpServletRequest request, Model model) {
        
        IBDao dao = sqlSession.getMapper(IBDao.class);
        //list에서 넘어오는 bId를 받아줌
        //그 값을 content_view라는 이름으로 모델에 담아서 넘어감 content_view.jsp 페이지로 
        model.addAttribute("content_view", dao.content_view(request.getParameter("bId")));
        
        return "content_view";
    }
    
    @RequestMapping(value = "/modify")
    public String modify(HttpServletRequest request, Model model) {
        
        IBDao dao = sqlSession.getMapper(IBDao.class);
        
        dao.modify(request.getParameter("bId")
                , request.getParameter("bName")
                , request.getParameter("bTitle")
                , request.getParameter("bContent"));
        
        return "redirect:list";
    }
    
    @RequestMapping("/delete")
    public String delete(HttpServletRequest request, Model model) {
 
        IBDao dao = sqlSession.getMapper(IBDao.class);
        //content_view에서 넘어온 bId값을 받아와서 delete 메서드 실행
        dao.delete(request.getParameter("bId"));
        
        return "redirect:list";
    }
}
cs

 

IBDao.java

 

 

IBDao.xml

 

 

list.jsp

 

 

content_view.jsp

 

 

write_view.jsp

 

 

test_member를 MyBatis를 사용해서 바꾼거 - 아이디, 비밀번호 체크하는거 있는 프로젝트

 

 

---

 

 

---

 

728x90