- entity 파일 만들기
@Getter
@Setter
@NoArgsConstructor
@ToString
@Document(collection = "member3")
public class Member {
@Id
// _id로 만들거다
private String id = null;
// @Field(name = "password")
private String pw = null;
private String pw1 = null;
private String name = null;
private int age = 0;
// 엔티티가 db와 연동됨
// 변수가 곧 db에 들어갈 데이터
}
@Document는 db의 컬렉션과 연결하겠다는 의미를 담고 있다.
application.properties에서 db에 접속하고 ,
entity에서 collection과 연결한다.
@ID는 db컬렉션 안에 _id 컬럼으로 들어감을 의미한다.
Field는 변수 명과 db에 들어갈 컬럼명과 다를 경우에 Field를 쓴다.
Field가 없을 경우에는 변수 명이 곧 컬럼 명이 된다.
- JSP파일에서 form 작업하기
<form th:action="@{/member/insert}" method="post">
<!-- 아이디 -->
<div class="mb-3">
<label for="exampleInputEmail1" class="form-label">아이디</label>
<input class="form-control" id="exampleInputEmail1" name="id">
</div>
<!-- 암호 -->
<div class="mb-3">
<label for="exampleInputPassword1" class="form-label">암호</label>
<input type="password" class="form-control" name="pw">
</div>
다음과 같이 form method에 post를 입력하고
db와 연동될 태그에 name으로 연결해 준다.
name의 데이터명을 명명하는 방법은
1. 임의로 하거나
2. entity의 변수명과 일치시키는 방법이 있는데
2번의 방법을 사용하는 것이 @ModelAttribute을 통해 편리하게 db에 데이터를 넣을 수 있다.
- MemberController.java에서 처리하기
@PostMapping(value = { "/insert" })
public String isnertPOST(
@RequestParam(name = "id") String id,
@RequestParam(name = "pw") String pw,
@RequestParam(name = "pw1") String pw1,
@RequestParam(name = "name") String name,
@RequestParam(name = "age") int age) {
// DB에 추가하기
// 클래스명 aaa = new 생성자();
Member mem = new Member();
mem.setId(id);
mem.setName(name);
System.out.println(mem.toString());
return "redirect:/member/insert";
params로 값들을 받는다. 그리고 생성자를 호출해 데이터 값을 넣어준다.
데이터가 적으면 이와 같은 방법을 사용할 수 있지만, 데이터가 많아지면 어려워짐
@ModelAttribute 사용하기
@PostMapping(value = { "/insert" })
public String isnertPOST(
@ModelAttribute Member mem) {
System.out.println(mem.toString());
return "redirect:/member/insert";
}
텍스트entity안에 변수 이름과 jsp의 form 안에 name과 연결된 명이 같을 경우만 쓸 수 있다
params로 name으로 받고, 클래스를 호출해서 값을 다시 set으로 집어 넣는 걸
한 번에 처리할 수 있다.