이전글
https://greed-yb.tistory.com/138
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를 사용하자
값을 입력하고 버튼을 클릭하면 아래와 같이 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을 이용한 기본 세팅이 끝났다
수백 수천번 만들던 건데도 정리하려니까 용어도 잘 생각 안 나고 정리가 안되는 거 같다..;;
'개발 > Spring' 카테고리의 다른 글
[SpringBoot+IntelliJ+Oracle+Thymeleaf+Paging] 웹 게시판 만들기(2) - Controller (0) | 2023.04.20 |
---|---|
[SpringBoot+IntelliJ+Oracle+Thymeleaf+Paging] 웹 게시판 만들기(1) - 구성 (0) | 2023.04.20 |
[Java] IntelliJ+ Sptring boot + Maven + Thymeleaf + Mybatis +Oracle 프로젝트 시작하기(2) (0) | 2023.03.25 |
[Java] IntelliJ+ Sptring boot + Maven + Thymeleaf + Mybatis +Oracle 프로젝트 시작하기(1) (0) | 2023.03.25 |
[Spring Boot] log4j 설정 (0) | 2023.03.10 |
댓글