DB에서 테이블 생성 > 토대로 BoardVO에 변수 생성 >
다오 역할을 수행 할 BoardMapper.java생성
(원래는 여기서 쿼리를 실행해도 되지만 쿼리가 길어지고 복잡해지는 경우
가독성이 극히 나빠질 수 있기 때문에 /프로젝트/src/main/resources밑에
도메인과 같은 뎁스로 파일을 생성해주고 그 밑에 쿼리를 받을 .xml을 만들어준다.
BoardMapper.xml
<?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.dullinsub.mapper.BoardMapper">
<select id="getList" resultType="board"> <!-- CDATA안에 든거 일반 문자취급! ex)cdata없으면 < 연산자를 태그로 인식 -->
<![CDATA[
SELECT * FROM TBL_BOARD WHERE 0 < BNO
]]>
</select>
<select id="read" resultType="board"> <!-- BoardMapper에 @select 어노테이션 대행 -->
<![CDATA[
SELECT * FROM TBL_BOARD WHERE BNO = #{bno}
]]>
</select>
<insert id="insert">
INSERT INTO TBL_BOARD(BNO, TITLE, CONTENT, WRITER)
VALUES (SEQ_BOARD.NEXTVAL, #{title}, #{content}, #{writer}) <!-- #{}안에 무조건 소문자로 해야함 이제 ?하고 값 지정 안해줘도 된다! -->
</insert>
<insert id="insertSelectKey">
<selectKey keyProperty="bno" order="BEFORE" resultType="long">
SELECT SEQ_BOARD.NEXTVAL FROM DUAL
</selectKey>
INSERT INTO TBL_BOARD(BNO, TITLE, CONTENT, WRITER)
VALUES (#{bno}, #{title}, #{content}, #{writer})
</insert>
</mapper>
.xml이후 기존의 BoardMapper.java
package com.dullinsub.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Select;
import com.dullinsub.domain.BoardVO;
public interface BoardMapper { // dao 역할 대신
// @Select("SELECT * FROM TBL_BOARD WHERE BNO > 0") <!-- BoardMapper.xml에 @select 어노테이션 대행 -->
public List<BoardVO> getList();
public BoardVO read(Long bno);
// DML 문장들은 반환타입 int로 하는거 추천 > 몇개 나왔는지 확인위해
public int insert(BoardVO boardVO);
public int insertSelectKey(BoardVO boardVO);
}
이후
다시 본 과정으로 돌아와
이젠 service interface와 serviceImpl을 만들러간다.
-BoardService 인터페이스
package com.dullinsub.service;
import com.dullinsub.domain.BoardVO;
public interface BoardService {
int register(BoardVO boardVO);
}
-BoardServiceImpl
package com.dullinsub.service;
import org.springframework.stereotype.Service;
import com.dullinsub.domain.BoardVO;
import com.dullinsub.mapper.BoardMapper;
import lombok.AllArgsConstructor;
@Service @AllArgsConstructor
public class BoardServiceImpl implements BoardService {
private BoardMapper boardMapper;
public int register(BoardVO boardVO){
return boardMapper.insertSelectKey(boardVO);
}
}
웹을 통한 실행을 위한 컨트롤러
- BoardController.java
package com.dullinsub.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import com.dullinsub.domain.BoardVO;
import com.dullinsub.service.BoardService;
import lombok.AllArgsConstructor;
@Controller
@RequestMapping("board/*")
@AllArgsConstructor
public class BoardController {
private BoardService boardService;
@PostMapping("register")
public void register(BoardVO boardVO){
boardService.register(boardVO);
// redirect
}
}
반응형
'Spring' 카테고리의 다른 글
문의하기 메일보내기 기능 - gmail사용 (0) | 2022.11.01 |
---|---|
[Spring error!!] @GetMapping, @PostMapping 등 어노테이션 import 에러 (0) | 2022.10.31 |
🤷♂️ 내가 만든 웹페이지 배포 🤷♂️ 설레설레 설레임🤑 (0) | 2022.05.06 |
spring - Failed to load ApplicationContext 에러해결 (0) | 2022.05.04 |
spring - 테스트코드 UNREAD 발생! 발생! (0) | 2022.05.03 |