취미로 음악을 하는 개발자

[Spring Boot] MyBatis HashMap 사용 본문

공대인/Spring[Boot]

[Spring Boot] MyBatis HashMap 사용

영월특별시 2019. 8. 16. 16:29
728x90

MyBatis Query 성공시


Select - Select 문에 해당하는 결과


Insert - 1 (여러 개일 경우도 1)


Update - Update된 행의 개수 반환 (없으면 0)


Delete - Delete된 행의 개수 반환 (없으면 0)



프로젝트 생성




코드 구현


* build.gradle, application.properties, dto 및 jsp부분은 이전 프로젝트 것을 그대로 사용.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.study.springboot.dao;
 
import java.util.List;
import java.util.Map;
 
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
 
import com.study.springboot.dto.SimpleBbsDto;
 
@Mapper
public interface ISimpleBbsDao {
    List<SimpleBbsDto> listDao();
    SimpleBbsDto viewDao(String id);
    Integer writeDao(Map<StringString> map);
    Integer deleteDao(@Param("id"String id);
    Integer articleCount();
}
cs


writeDao 부분을 Map을 이용하여 구현.

articleCount()는 현재 테이블의 행의 개수를 출력, 나머지는 이전 프로젝트와 같다.


// SimpleBbsDao.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
<?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="com.study.springboot.dao.ISimpleBbsDao">
    <select id="listDao" resultType="com.study.springboot.dto.SimpleBbsDto">
        select * from simple_bbs order by id desc
    </select>
    
    <select id="viewDao" resultType="com.study.springboot.dto.SimpleBbsDto">
        select * from simple_bbs where id = #{0}
    </select>
    
    <select id="writeDao" parameterType="java.util.HashMap">
        insert into simple_bbs (writer, title, content)
            values (#{item1}, #{item2}, #{item3})
    </select>
    
    <select id="deleteDao">
        delete from simple_bbs where id = #{id}
    </select>
    
    <select id="articleCount" resultType="int">
        select count(*) from simple_bbs
    </select>
</mapper>
cs


writeDao에 파라미터 타입을 HashMap으로 해줘서 item1, 2, 3을 파라미터로 받게 한다.

articleCount는 위에서 말한 것처럼 행의 개수를 출력, 출력값은 항상 정수이므로 int타입으로 함.


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
68
69
70
71
72
package com.study.springboot;
 
import java.util.HashMap;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
 
import com.study.springboot.dao.ISimpleBbsDao;
 
@Controller
public class MyController {
    @Autowired
    ISimpleBbsDao dao;
    
    @RequestMapping("/")
    public String root() throws Exception {
        return "redirect:list";
    }
 
    @RequestMapping("/list")
    public String userlistPage(Model model) {
        model.addAttribute("list", dao.listDao());
        
        int nTotleCount = dao.articleCount();
        System.out.println("Count : " + nTotleCount);
        
        return "/list";
    }
    
    @RequestMapping("/view")
    public String view(HttpServletRequest request,Model model) {
        String sId = request.getParameter("id");
        model.addAttribute("dto", dao.viewDao(sId));
        return "/view";
    }
    
    @RequestMapping("/writeForm")
    public String writeForm() {
        return "/writeForm";
    }
    
    @RequestMapping("/write")
    public String write(HttpServletRequest request, Model model) {
        String sName = request.getParameter("writer");
        String sTitle = request.getParameter("title");
        String sContent = request.getParameter("content");
        
        Map<StringString> map = new HashMap<StringString>();
        map.put("item1", sName);
        map.put("item2", sTitle);
        map.put("item3", sContent);
        
        int nResult = dao.writeDao(map);
        System.out.println("Write : " + nResult);
        
        return "redirect:list";
    }
    
    @RequestMapping("/delete")
    public String delete(HttpServletRequest request, Model model) {
        String sId = request.getParameter("id");
        int nResult = dao.deleteDao(sId);
        System.out.println("Delete : " + nResult);
        
        return "redirect:list";
    }
}
cs


list, write, delete에 각각 출력문이 나오게했다.

* 원래 delete, write가 1을 출력해야하는데 왜 null을 출력하는지 모르겠다. 참고로 실행은 제대로 된다. 나중에 따로 올릴 것임.


write 메소드를 보면 HashMap을 사용했는데 결국에는 model에 속성을 더한 것과 비슷하다.

writer, title, content 값을 변수에 저장하고 item이라는 키의 값으로 넣어주고 그것을 writeDao의 값으로 넣어준 것.


'공대인 > Spring[Boot]' 카테고리의 다른 글

[Spring Boot] Transaction (Manager, Template, Propagation)  (0) 2019.08.22
[Spring Boot] logback  (0) 2019.08.16
[Spring Boot] MyBatis 파라미터 사용  (0) 2019.08.14
[Spring Boot] MyBatis  (0) 2019.08.13
[Spring Framework] MyBatis란  (0) 2019.08.09
Comments