oracle에 문제로 포맷후 다시실행하고 고난과 역경의 순간들이었습니다..
오라클 21c 설치후 sqldeveloper 설치 localhost를 IP 주소로 바꿔서 해줘야 성공이뜹니다..
쿼리문을 돌린후 위에 나와있는 제시사항 코드로 짜보기
① 우선 첫번째로 위에 켜자마자 주소가 list.do로 나오게 하기 위해서 redirect로 return 해주었습니다.
MvcController
1
2
3
4
5
6
7
8
9
10
|
@Controller
public class MvcController {
@GetMapping(value="/")
public String list() {
return "redirect:/board/list.do";
}
}
|
cs |
② 그다음으로 mapper.xml을 해줍니다 mybatis를 사용 데이터베이스와 연결해주시위해서 작성해줍니다.
getBoard는 상세보기를 하기위해 쿼리를 조회합니다
addBoard는 새글작성을 한후 글이 저장되게 추가해줍니다
getBoardList는 첫화면에서 목록을 보여주기위한 조회입니다.
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
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gdu.exam.dao.BoardMapper">
<select id="getBoard" parameterType="int" resultType="BoardDto">
SELECT BOARD_NO, AUTHOR, TITLE, CONTENT, HIT, IP, POSTDATE
FROM MVC_BOARD_T
WHERE BOARD_NO = #{boardNo}
</select>
<insert id="addBoard" parameterType="BoardDto">
INSERT INTO MVC_BOARD_T (
BOARD_NO
, AUTHOR
, TITLE
, CONTENT
) VALUES (
MVC_BOARD_SEQ.NEXTVAL
, #{author}
, #{title}
, #{content}
)
</insert>
<select id="getBoardList" resultType="BoardDto">
SELECT BOARD_NO, AUTHOR, TITLE, HIT, POSTDATE
FROM MVC_BOARD_T
ORDER BY BOARD_NO DESC
</select>
<delete id="delete" parameterType="int">
DELETE FROM MVC_BOARD_T WHERE BOARD_NO = #{boardNo}
</delete>
</mapper>
|
cs |
③ interface BoardMapper
각각 데이터베이스에서 수행할 작업을 정의합니다. 연결한 데이터베이스를 실행해주기위한 코드입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package com.gdu.exam.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.gdu.exam.dto.BoardDto;
@Mapper
public interface BoardMapper {
public BoardDto getBoard(int boardNo);
public int addBoard(BoardDto boardDto);
public List<BoardDto> getBoardList();
public int delete(int boardNo);
}
|
cs |
④ 비지니스 로직 정의 서비스 계층 BoardService
dao와 controller 중간계층역할
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
package com.gdu.exam.service;
import java.util.List;
import com.gdu.exam.dto.BoardDto;
public interface BoardService {
public BoardDto getBoard(int boardNo);
public int addBoard(BoardDto boardDto);
public List<BoardDto> getBoardList();
public int delete(int boardNo);
}
|
cs |
⑤ 서비스 구현
addBoard(BoardDto boardDto) -> BoardDto 객체를 이용하여 데이터베이스에 새로운 게시글을 추가합니다.
getBoardList() -> 목록조회 List로 받습니다.
getBoard(int boardNo)-> 게시글 번호를 이용하여 해당 게시글의 정보를 조회하여 반환합니다.
delete(int boardNo) -> 게시글 번호로 삭제요청
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
|
@RequiredArgsConstructor
@Service
public class BoardServiceImpl implements BoardService {
private final BoardMapper boardMapper;
@Override
public int addBoard(BoardDto boardDto) {
return boardMapper.addBoard(boardDto);
}
@Override
public List<BoardDto> getBoardList() {
return boardMapper.getBoardList();
}
@Override
public BoardDto getBoard(int boardNo) {
return boardMapper.getBoard(boardNo);
}
@Override
public int delete(int boardNo) {
return boardMapper.delete(boardNo);
}
}
|
cs |
⑥ controllerd
HTTP 요청을 처리하고, 해당 요청에 따라 비즈니스 로직을 실행하며, 화면으로 데이터를 전달하는 역할을 합니다.
add(BoardDto boardDto, RedirectAttributes redirectAttributes) ->
boardDto 객체를 사용하여 게시글을 추가하고, addResult 값을 redirectAttributes에 추가하여 추가 결과를
다음 요청으로 전달합니다.
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
|
@RequiredArgsConstructor
@Controller
public class BoardController {
private final BoardService boardService;
@GetMapping(value="/board/list.do")
public String list(Model model) {
List<BoardDto> boardList = boardService.getBoardList();
model.addAttribute("boardList", boardList);
return "board/list";
}
@GetMapping(value="/board/write.do")
public String write() {
return "board/write";
}
@PostMapping(value="/board/insert.do")
public String add(BoardDto boardDto
, RedirectAttributes redirectAttributes) {
int addResult = boardService.addBoard(boardDto);
redirectAttributes.addFlashAttribute("addResult", addResult);
return "redirect:/board/list.do";
}
@GetMapping(value="/board/detail.do")
public String detail(@RequestParam int boardNo, Model model) {
BoardDto boardDto = boardService.getBoard(boardNo);
model.addAttribute("board", boardDto);
return "board/detail";
}
@GetMapping("/board/delete.do")
public String delete(@RequestParam int boardNo, RedirectAttributes redirectAttributes) {
int deleteResult = boardService.delete(boardNo);
redirectAttributes.addFlashAttribute("deleteResult", deleteResult);
return "redirect:/board/list.do";
}
}
|
cs |
'코딩기록 저장소 🐕 > 스스로 프로젝트와 연습' 카테고리의 다른 글
개인프로젝트5) 회원가입 Service와 Controller (0) | 2024.03.06 |
---|---|
개인프로젝트4) 회원가입 쿼리문 작성 insert 확인(Mapper) (0) | 2024.03.03 |
개인프로젝트3) 설정2 (0) | 2024.02.26 |
개인프로젝트2) 설정 (0) | 2024.02.21 |
개인프로젝트1) 기획 (0) | 2024.02.20 |