쿼리를 별도로 뽑아내는 기능을 추가
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를 사용해서 바꾼거 - 아이디, 비밀번호 체크하는거 있는 프로젝트
---
---
'학원 > 스프링-학원' 카테고리의 다른 글
상품관리 문제 - standard+MyBatis (0) | 2022.05.23 |
---|---|
mvc_board -> standard 형태로 -마이바티스 수정 (0) | 2022.05.23 |
스프링 JDBC (0) | 2022.05.19 |
MVC 로그인 문제 (JDBC 템플릿 사용 부분도 추가) (0) | 2022.05.19 |
MVC_상품정보 관리 문제 (0) | 2022.05.18 |