[포스코x코딩온] 웹개발자 풀스택 부트캠프8기
Mybatis를 활용한 CRUD 구현(회원가입, 로그인, 수정, 삭제)
항상 발전하는 개발자
2023. 11. 4. 11:34
728x90
Mybatis를 활용하여 CRUD를 구현해보겠습니다.
Mybatis가 무엇인지 궁금하신 분들은 아래 글을 참조해주세요.
2023.11.02 - [[포스코x코딩온] 웹개발자 풀스택 부트캠프8기] - [포스코x코딩온] MyBatis 사용(with h2)
[포스코x코딩온] MyBatis 사용(with h2)
MyBatis https://mybatis.org/mybatis-3/ko/index.html MyBatis – 마이바티스 3 | 소개 마이바티스는 무엇인가? 마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스
dongho-kang.tistory.com
이 글에서는 간단하게 구현하는 로직에 대해서만 설명하겠습니다. 전체 소스 코드는 깃허브를 참조 해주세요.
파일 구조
파일 구조를 보고 흘러가는 로직 파악
로그인을 예시로 보여드리겠습니다.
- URI/ View (login.html)
- axios을 통해 데이터를 보냅니다.
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>Login</title>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
</head>
<body>
<form id="form_login">
<input type="text" placeholder="아이디" name="id" /> <br />
<input type="password" placeholder="비밀번호" name="pw" /> <br />
<button type="button" onclick="login();">로그인</button>
</form>
<script>
function login() {
const form = document.getElementById('form_login');
const data = {
userid: form.id.value,
password: form.pw.value,
};
axios({
method: 'POST',
url: '/login',
data,
}).then((res) => {
console.log(res);
if (res.data) {
alert('로그인 성공!');
document.location.href = `/data/${res.data.id}`
} else {
alert('로그인 실패!');
form.reset();
}
});
}
</script>
</body>
</html>
- Controller (PersonController.java)
- @RequestBody를 통해 html에서 보내는 데이터를 PersonDTO로 받아옵니다.
- 받아온 데이터를 활용하여 personService.getPerson에 보내서 받아온 결과를 다시 View로 보냅니다.
//로그인
@GetMapping("/login")
public String getLogin(){
return "login";
}
@PostMapping("/login")
@ResponseBody
public PersonDTO postLogin(@RequestBody PersonDTO personDTO){
return personService.getPerson(personDTO);
}
- Service (PersonService.java)
- Controller에서 받아온 데이터를 personMapper.getPerson으로 보내고 결과를 새로운 PersonDTO에 저장하고 Controller로 보냅니다.
//로그인
public PersonDTO getPerson(PersonDTO personDTO){
Person person = personMapper.getPerson(personDTO.getUserid(), personDTO.getPassword());
//반환 타입으로 변경
PersonDTO data = new PersonDTO();
//로그인 후 회원정보 조회를 위한 db id값 필요
data.setId(person.getId());
return data;
- Mapper (PersonMapper) (인터페이스)
- Service에서 받아온 데이터로 SQL문을 실행합니다.
//로그인
@Select("SELECT * FROM person WHERE (userid=#{userid} and password=#{password})")
Person getPerson(String userid, String password);
https://github.com/DongHo-Kang/CRUD_with_Mybatis.git
728x90