IntelliJ SpringBoot 세팅 ( maven, MySql, MyBatis, JSP )

임성준·2022년 2월 19일
0
post-thumbnail

1. 프로젝트 생성

Spring Initializr

  • Project - Maven Project
  • Language - Java
  • Spring Boot - 2.6.3
  • Group - 기업 도메인 명
  • Artifact - 빌드의 결과물, 프로젝트 명
  • Packaging - Jar
  • Java - 8
  • Dependencies - Spring Web,MySQL Driver,MyBatis - Framework,Lombok

2. pom.xml dependency 확인

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
<!-- 			<scope>runtime</scope> -->  삭제
</dependency>
<!-- 아래 내용 추가 -->
<dependency>   
	<groupId>org.apache.tomcat.embed</groupId> 
    <artifactId>tomcat-embed-jasper</artifactId> 
</dependency>

3. DTO 작성

src  >  main  >  java  >  그룹.프로젝트명  >  dto
1.  dto 패키지 생성
2.  dto  >  DTO 파일 생성(Class)

  • DB 맞게 필요한 변수 선언
  • Lombok의 Data로 getter, setter를 대신한다.

import lombok.Data;
@Data
public class DTO {
    private int id;
    private String title;
    private String content;
    private String writer;
    private String  writeDate;
    private int hit;
}

4. DAO(Mapper) Interface 작성

> src  >  main  >  java  >  그룹.프로젝트명  >  dao
1.  dao 패키지 생성
2.  dao  >  DaoMapper 파일 생성(Interface)

import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import DTO(dto패키지 DTO import)
@Mapper
public interface Mapper {
	public List<DTO> 변수명(); - dB데이터를 불러오는 메소드
    public void 변수명(DTO dto); - dB에 데이터를 저장하는 메소드
}

5. Mapper.xml 작성

src  >  main  >  resources   >  mapper
1.   mapper 패키지 생성
2.  mapper  >  Mapper.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="그룹.프로젝트명.dao.DaoMapper (DaoMapper 파일 경로)" >
    <select id="DaoMapper 파일의 선언된 메소드명" resultType="그룹.프로젝트명.dto.DTO (DTO 파일 경로)">
        select * from table명 (필요한 쿼리문 작성) - 출력
    </select>
    <insert id="Mapper파일의 선언된 메소드명">
        INSERT INTO BOARD (HIT, TITLE, WRITEDATE, WRITER) VALUES (#{hit}, #{title}, #{writeDate}, #{writer})  (필요한 쿼리문 작성) -입력
    </insert>
</mapper>

6. application.properties 작성

  • spring.datasource.url에서 자신의 DB명 기입
spring.mvc.view.prefix=/WEB-INF/views/  - JSP파일이 위치할 경로설정
spring.mvc.view.suffix=.jsp
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/DB명?useSSL=false&serverTimezone=Asia/Seoul
spring.datasource.username= 아이디
spring.datasource.password= 비밀번호
mybatis.mapper-locations=classpath:mapper/Mapper.xml

7. Controller 작성

src  >  main  >  java  >  그룹.프로젝트명  >  controller
1.   controller 패키지 생성
2.   controller   >   MainController 파일 생성 (Class)

import ( DaoMapper 파일 import)
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 (DTO 파일 import)
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class MainController {
    @Autowired
    private DaoMapper mapper;
    // DB데이터를 불러오는 controller
    @RequestMapping("/")
    public String list(Model model) {
        model.addAttribute("list", mapper.변수명());
        return "index";
    }
    // DB에 데이터를 저장하는 controller
    @RequestMapping(value = "request 주소", method = RequestMethod.POST)
    public String write(DTO dto) {
        dto.setTitle(dto.getTitle().trim());
        dto.setHit(dto.getHit());
        dto.setWriteDate(dto.getWriteDate().trim());
        dto.setWriter(dto.getWriter().trim());
        mapper.write(dto);
        System.out.println(dto);
        return "redirect:";
    }
}

8. JSP를 이용한 view페이지 작성

src  >  main  >   webapp
1.   webapp 패키지 생성
2.   webapp 패키지안에 WEB-INF, resources 패키지 생성
3.   WEB-INF 패키지 안에 views 패키지 생성
4.   views 패키지 안에 필요한 jsp 파일 생성

  • input의 name과 DTO파일의 변수명을 맞추어준다.
  • ${list} controller의 키값으로 데이터를 받아와 태그에 넣어준다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<html>
<head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
</head>
<body>
    <form action="write.do" method="post">
        <label>HIT: int</label>
        <input type="text" name="hit"><br />
        <label>Title</label>
        <input type="text" name="title"><br />
        <label>WriteDate</label>
        <input type="text" name="writeDate"><br />
        <label>Writer</label>
        <input type="text" name="writer">
        <button>버튼</button>
    </form>
    ${list}
</body>
</html>
profile
오늘도 공부 📖🌙

0개의 댓글