JDBC와 Mybatis 라이브러리가 모두 다운된 상태이고 mapper scan경로설정으로 mapper주입 가능상태,mysql경로설정이 완료되었다는 가정하에 작성하는 글입니다.
(위와 같은 Mybatis 로 DB연결을 하기 위한 Spring 설정부분은 카테고리 Spring설정에 업로드예정 입니다)
# IBoardMapper.java
->게시판의 모든 db연결이 필요한 기능들을 먼저 위의 IBoardMapper인터페이스에 선언해준뒤
아래와 같이 IBoardMapper의 메서드들을 BoardMapper.xml에서 기능에 맞는 sql로 모두 구현해줍니다. 위의 SearchVO는 검색기능과 페이지 정보가 포함된 클래스인데 아직 구현하지 않은 상태입니다(이 부분은 다음 글에서 작성하겠습니다)
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
|
package com.example.demo.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.example.demo.paging.PageVO;
import com.example.demo.search.SearchVO;
import com.example.demo.vo.BoardVO;
@Mapper
public interface IBoardMapper {
//전체 리스트 조회(검색과 페이징 포함)
List<BoardVO> getAllArticles(SearchVO vo);
//특정 게시물 조회
BoardVO getArticle(int boardNum);
//게시물 조회수 상승
void updateViewCnt(int boardNum);
//전체 게시물수 조회(검색 페이징 포함)
int countArticles(SearchVO vo);
//게시물 등록
void insert(BoardVO article);
//특정게시물 수정
void update(BoardVO article);
//특정게시물 삭제
void delete(int boardNum);
}
|
cs |
# BoardMapper.xml
-> (아래의 SQL Query문에 대한 자세한 설명은 카테고리 MySQL에 기록되어 있습니다.)
링크: 'MySQL' 카테고리의 글 목록 (tistory.com)
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
<?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.example.demo.dao.IBoardMapper">
<resultMap id="BoardMap" type="com.example.demo.vo.BoardVO">
<result property="boardNum" column="board_num"/>
<result property="writer" column="writer"/>
<result property="title" column="title"/>
<result property="content" column="content"/>
<result property="wrDate" column="wr_date"/>
<result property="viewCnt" column="view_cnt"/>
</resultMap>
<insert id="insert">
insert into board(writer,title,content)
values(#{writer},#{title},#{content})
</insert>
<select id="getAllArticles" resultMap="BoardMap">
select *
from board
<if test="condition=='title'">
where title
like concat('%',#{keyword},'%')
</if>
<if test="condition=='writer'">
where writer
like concat('%',#{keyword},'%')
</if>
<if test="condition=='content'">
where title
like concat('%',#{keyword},'%')
</if>
<if test="condition=='titleContent'">
where title
like concat('%',#{keyword},'%')
or content
like concat('%',#{keyword},'%')
</if>
limit #{startPage},#{countPerPage}
</select>
<select id="countArticles" resultType="int">
select count(*)
from board
<if test="condition=='title'">
where title
like concat('%',#{keyword},'%')
</if>
<if test="condition=='writer'">
where writer
like concat('%',#{keyword},'%')
</if>
<if test="condition=='content'">
where title
like concat('%',#{keyword},'%')
</if>
<if test="condition=='titleContent'">
where title
like concat('%',#{keyword},'%')
or content
like concat('%',#{keyword},'%')
</if>
</select>
<select id="getArticle" resultMap="BoardMap">
Select *
from board
where board_num=#{boardNum}
</select>
<update id="updateViewCnt">
update board
set view_cnt = view_cnt + 1
where board_num = #{boardNum};
</update>
<delete id="delete">
DELETE from board
where board_num=#{boardNum}
</delete>
<update id="update">
update board
set writer=#{writer},content=#{content},title=#{title}
where board_num=#{boardNum}
</update>
</mapper>
|
cs |
'Spring Boot 개인 프로젝트 > 게시판(Board)' 카테고리의 다른 글
(4 - 2)(게시물 리스트 페이징) 네비게이션 바를 만들기위한 PageCreator클래스 생성 (0) | 2021.09.18 |
---|---|
(4 - 1)(게시물 리스트 페이징) 검색기능과 페이지 정보가 포함된 클래스들 생성 (0) | 2021.09.18 |
(2) BoardVO클래스 생성 (0) | 2021.09.18 |
(1) 게시글 정보를 관리할 Mysql DB 테이블 설계 (0) | 2021.09.18 |
시작하기전 간단한 게시판 기능명세서 작성 (0) | 2021.09.18 |