본문 바로가기
개발/Spring

[Java] IntelliJ+ Sptring boot + Maven + Thymeleaf + Oracle 프로젝트 시작하기(3)

by 코딩하는 흰둥이 2023. 3. 25.
반응형

이전글

https://greed-yb.tistory.com/138

 

[Java] IntelliJ+ Sptring boot + Maven + Thymeleaf + Oracle 프로젝트 시작하기(2)

이전 글 https://greed-yb.tistory.com/137 [Java] IntelliJ+ Sptring boot + Maven + Thymeleaf + Oracle 프로젝트 시작하기(1) IntelliJ Ultimate 로 진행하였다 https://www.jetbrains.com/ko-kr/idea/download/#section=windows IntelliJ IDEA 다운로

greed-yb.tistory.com

 

Vo 생성

src -> main -> java -> com -> example -> demo -> vo 패키지 생성 후 -> Vo.java 파일 생성해 준다

 

test 용도로 사용할 vo 변수를 입력해 준다

예)
private String name;

private int age;
.....

입력 후 마우스 오른쪽 클릭 -> Generate 클릭 -> 

Getter and Setter를 클릭하여 변수의 Getter , Setter를 생성한다

 

Alt + Ins 단축키로도 사용가능하다

toStrong()까지 만들어준다.

 

예)

public class testVo {

    private String name;

    private String age;

    private String addr;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    @Override
    public String toString() {
        return "testVo{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", addr='" + addr + '\'' +
                '}';
    }
}

 

 

데이터 값 확인하기

만들어두었던 index.html 페이지에 데이터 값을 제대로 받아오는지 확인하는 form을 만들어준다

 

  • index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <form name="formTest" method="post" action="/formTest">
        이름 : <input name="name"></p>
        나이 : <input name="age"></p>
        주소 : <input name="addr"></p>
        <button type="submit">버튼</button>
    </form>
</div>
</body>
</html>

 

  • MainController

mapper에 들어갈 값을 명시하기 위해 Vo를 사용해 준다

    @PostMapping("/formTest")
    public String formTest(testVo vo) throws Exception {
        System.err.println(vo.toString());
        return "index";
    }

 

 

@RequestParam Map <String, Object>를 이용하여  Vo 없이도 값을 받아 올 수는 있다

    @PostMapping("/formTest")
    public String formTest(@RequestParam Map<String, Objects> formTest) throws Exception {
        System.err.println(formTest.toString());
        return "index";
    }

 

Vo를 사용해야 테이블의 컬럼과 받아오고 사용하려는 변수를 정확히 할 수 있기 때문에 웬만하면 Vo를 사용하자

 

 

 

 

브라우저 localhost:9090

값을 입력하고 버튼을 클릭하면 아래와 같이 System.err.prinln()에 의해 값이 성공적으로 찍히는 것을 볼 수 있다

 

 

 

application.properties 설정

# VO location
mybatis.type-aliases-package=com.example.demo.vo

# xml location
mybatis.mapper-locations=classpath:mappers/**/*.xml

mapper를 찾고 사용하는 vo 위치를 명시하기 위한 설정

 

 

 

Service , Mapper  - interface.java 생성

  • src -> main -> java -> com -> example -> demo -> service
  • src -> main -> java -> com -> example -> demo -> mapper

폴더를 각각 만들어주고 각각 testService.java 와 testMapper.java 파일을 만들어준다

이때 꼭 interface로 파일을 만들어줘서 메서드를 강제하게 한다.

 

데이터가 DB에 들어가는지 확인하는 임시 메서드이다

public interface testService {

    void formTest(testVo vo) throws Exception;

}

@Mapper
public interface testMapper {

    void formTest(testVo vo) throws Exception;
}

mapper - interface.java 에 꼭 @Mapper 가 들어가야 한다.

 

 

 

Mapper.xml 생성

resources -> mappers 폴더를 생성한다

mappers의

mappers 폴더에 마우스 오른쪽 클릭을 하여 file을 선택하고 예) formTestMapper.xml을 입력하여 확장자를 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>

</mapper>

xml 파일을 만들면 빈 xml 만 생성되므로 위의 코드를 외울게 아니라면 하나씩 복사해 두자

 

mapper 태그 namespace에 읽어올 mapper interface. java 파일 경로를 입력해 준다

DB와 연결이 되었는지 확인하기 위해 insert 문을 작성한다

 

 

 

실행하기 위한 serviceImpl.java 생성

  • src -> main -> java -> com -> example -> demo -> service -> impl 폴더 생성 후

안에 testServiceImpl.java 파일을 생성해 준다

 

testServiceImpl은 testService를 구현해 주고 mapper.xml과 연동하기 위해 testMapper - interface.java 파일을 의존성 주입한다

그리고 Override를 하여 testService에

Class 명 위에는 꼭 @Service를 넣는다

 

 

Cotroller 연동

@Autowired를 이용하여 testService를 의존성주입한다

 

formTest를 하기 위한 메서드에 의존성 주입한 service를 이용하여 브라우저에서 입력한 값이 전달될 수 있도록 코드를 작성한다

 

 

실행

현재 DBeaver로 실행 중

예)
CREATE TABLE FORMTEST(
NAME		VARCHAR2(100) ,
AGE		NUMBER,
ADDR		VARCHAR2(100)
)

입력 후 버튼을 클릭한다

 

정상적으로 들어온것을 확인 할 수 있다

Spring boot에 mybatis와 Oracle을 이용한 기본 세팅이 끝났다

수백 수천번 만들던 건데도 정리하려니까 용어도 잘 생각 안 나고 정리가 안되는 거 같다..;;

댓글