์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Absolute
- AGI
- ai
- AI agents
- AI engineer
- AI researcher
- ajax
- algorithm
- Algorithms
- aliases
- Array ๊ฐ์ฒด
- ASI
- bayes' theorem
- Bit
- Blur
- BOM
- bootstrap
- canva
- challenges
- ChatGPT
- Today
- In Total
A Joyful AI Research Journey๐ณ๐
[64] 230330 Spring: ํ์ ์ ๋ณด ์์ , ์ญ์ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ. *id๊ฐ ๋๊ธฐ๊ธฐ [K-๋์งํธ ํธ๋ ์ด๋ 64์ผ] ๋ณธ๋ฌธ
[64] 230330 Spring: ํ์ ์ ๋ณด ์์ , ์ญ์ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ. *id๊ฐ ๋๊ธฐ๊ธฐ [K-๋์งํธ ํธ๋ ์ด๋ 64์ผ]
yjyuwisely 2023. 3. 30. 12:50230329 Thu 64th class
Ch. 18 MVC ํจํด ๊ตฌํ
์ง๋: Ch. 18 MVC ํจํด ๊ตฌํ์ ๊ธฐ๋ฐํ ์์ฒด ์์
(๊ต์ฌ: ์ต๋ฒ๊ท ์ JSP 2.3 ์น ํ๋ก๊ทธ๋๋ฐ: ๊ธฐ์ด๋ถํฐ ์ค๊ธ๊น์ง, ์ ์: ์ต๋ฒ๊ท )
์ฑ
์์ ์ฝ๋: https://github.com/madvirus/jsp23
์ ์ ๋ธ๋ก๊ทธ: https://javacan.tistory.com/
์ค๋ ๋ฐฐ์ด ๊ฒ ์ค ๊ธฐ์ตํ ๊ฒ์ ์ ๋ฆฌํ๋ค.
๋ค์ ๊ธฐ์ตํ ๊ฒ
input ํ๊ทธ๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ ๊ฐ์ ํ์ดํํ๋ ํํ๊ฐ ์๋, ๋จ์ํ๊ฒ ๋ณด์ด๊ฒ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ค์ readonly๋ฅผ ๋ถ์ด๊ฑฐ๋,
ํํ์์ ๋๊ณ input ํ๊ทธ์ type์ hidden์ผ๋ก ์ค์ ํ๋ค.
๋ฒํธ: <input type="text" name="no" value="<%=rs.getString("no") %>" readonly> <!-- ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ -->
๋ฒํธ: <%=rs.getInt("no") %> <input type="hidden" name="no" value="<%=rs.getString("no") %>"> <!-- ๋๋ฒ์งธ ๋ฐฉ๋ฒ: hidden ์ด๋ค. -->
์ด ๊ธ์ ์ ์ผ ๋ง์ง๋ง์ ์๋ ๋ด์ฉ์ธ๋ฐ, ์์ ๋ด์ฉ์ ์์ฉํ ๊ฒ์ด๋ค.
input type="hidden"์ผ๋ก input ํํ๋ ์จ๊ธด๋ค. ๊ฒ์ํ ๋ชฉ๋ก์ ์์ฑ์ผ๊ณผ ์๊ฐ์ MySQL์ ๊ฐ์ ์ถ๋ ฅํ๋ค.
<%=session.getAttribute("user_id")%>
<input type="hidden" name="id" value="<%=session.getAttribute("user_id")%>">
์ ์ ๋ฐ ํน์ง
<input> ํ๊ทธ์ formaction ์์ฑ์ ํผ ๋ฐ์ดํฐ(form data)๊ฐ ์๋ฒ๋ก ์ ์ถ๋ ๋ ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ํ์ผ์ URL์ ๋ช
์ํ๋ค.
์ด ์์ฑ์ <input> ์์์ type ์์ฑ๊ฐ์ด “submit” ๋๋ “image”์ธ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
formaction ์์ฑ์ <form> ์์์ action ์์ฑ๊ฐ์ ์ฌ์ ์(overriding)ํฉ๋๋ค.
๋ฌธ๋ฒ
<input type="submit|image" formaction="URL">
์ฐธ๊ณ : http://www.tcpschool.com/html-tag-attrs/input-formaction
<form method="post>
<table>
<!-- (์ค๋ต) -->
</table>
<input type="submit" value="์์ " formaction="modifyBoard.jsp">
<input type="submit" value="์ญ์ " formaction="removeBoard.jsp">
</form>
loginVO ์ฐธ๊ณ
ํ์ ์ ๋ณด ์์ , ์ญ์ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
์ฐ์ SQL๋ก ์๊ฐํด ๋ณด๊ธฐ
id๊ฐ abcd์ธ ํ์ ์ ๋ณด๋ฅผ ์์ ํ๋ค.
update member
set name = 'a',
password = '1',
phone = '010'
where id = 'abcd'
;
id ๊ฐ์ ๋๊ธฐ๊ธฐ
๋ ๊ฐ์ง ๋ฐฉ๋ฒ
1. form ํ๊ทธ๋ฅผ ์ด์ฉํ๋ค.
<form action="listDetail">
์์ด๋<input type="text" name="id>
</form>
2. a ํ๊ทธ ์ด์ฉํ๋ฉด ๋๋ค.
<a href="listDetail?id=ํน์ ์์ด๋๊ฐ">์์ด๋</a>
listDetail.jsp๋ก ๊ฐ๊ธฐ ์ ์ select๋ก ์์ด๋ ๊ฐ์ ๊ฐ์ ธ๊ฐ๋ค.
์ฌ๊ธฐ์๋ form ํ๊ทธ๋ฅผ ์ด์ฉํ๋ค. get๋ฐฉ์์ ์ฐ๋ฉด ๋ ธ์ถ๋๋ค.
list.jsp
์์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์๋ URL์ด ๋์ค๋๋ก ๋ง๋ ๋ค.
http://localhost:8081/listDetail?id=aaa
์ฝ๋ 1) list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ํ์ ๊ด๋ฆฌ ํ์ด์ง</title>
</head>
<body>
<!-- ${memlist} -->
<table border="1">
<tr>
<td>ID</td><td>๋น๋ฐ๋ฒํธ</td><td>์ฃผ์</td><td>ํฐ๋ฒํธ</td><td>์ด๋ฉ์ผ</td><td>์ด๋ฆ</td><td>์์ผ</td>
</tr> <!-- c:forEach var="๋ณ์" items="์์ดํ
" -->
<c:forEach var="list" items="${memlist}"> <!-- ๋ฐ๋ณตํ๋ค. -->
<tr>
<td><a href="listDetail?id=${list.id}">${list.id}</a></td>
<!-- ๋ด๊ฐ ํ๋ฆฐ ๋ถ๋ถ: <a href="listDetail"> ์์ ?id=${list.id} ์ถ๊ฐํ๋ฉด id๊ฐ์ด listDetail.jsp๋ก ๋์ด๊ฐ๊ฒ ๋๋ค. -->
<td>${list.password}</td>
<td>${list.addr}</td>
<td>${list.phone}</td>
<td>${list.email}</td>
<td>${list.name}</td>
<td>${list.age}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
์ฝ๋ 1.1) listDetail.jsp
์ค๋ฅ๊ฐ ๋ ์ด์ ๋
</input type="submit" value="์์ " formaction="modify">
</input type="submit" value="์ญ์ " formaction="remove">
์ ์ฐ๊ธฐ ์ ์ <form method="post"> (์ค๋ต) </form>์ ์จ์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ input ํ๊ทธ ์์ name์ ์ธ ๋ LoginVO.java์ ๋ณ์๋ช
์ ์ ์ฒดํฌํด์ ์คํ๊ฐ ์๊ฒ ํ๋ค.
public class LoginVO {
private String id;
private String password;
private String addr;
private String phone;
private String email;
private String name;
private int age;
public String getId() {
return id;
}
(์ค๋ต)
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>๊ฐ์ธ ํ์ ๊ด๋ฆฌ ์์ธ ํ์ด์ง</title>
</head>
<body>
<!-- DB ์์
์ ํด์ผํ๋ค. ์๋น์ค์ Mapper์ ๋ณด๋ด์ค๋ค. -->
<%-- ${listDetail} --%>
<%-- <a href="listDetail?id=${list.id}">์์ด๋</a> --%>
<form method="post">
<table border="1">
<tr> <!-- name์ LoginVO์ ๋ง์ถฐ์ค์ผ DB๋ก ๋ณด๋ด์ง๋ค. -->
<td>ID</td><!-- id๋ DB์ ๋ณด๋ด๋ ค๋ฉด inputํ๊ทธ๊ฐ ํ์ํ๋ค. -->
<%-- <input type="text" value="${listDetail.id}" name="id" readonly> ์ด ๋ฐฉ์๋ ๊ฐ๋ฅํ๋ค. --%>
<td>${listDetail.id} <input type="hidden" name="id" value="${listDetail.id}"></td>
</tr>
<tr><!-- ํ์ ์ ๋ณด ์์ ๊ฐ๋ฅ -->
<td>๋น๋ฐ๋ฒํธ</td>
<td><input type="password" value="${listDetail.password}" name="password"></td>
</tr>
<tr>
<td>์ฃผ์</td><%-- <td><input type="text" value="${listDetail.addr}" name="addr"></td> --%>
<td>${listDetail.addr}</td>
</tr>
<tr><!-- ํ์ ์ ๋ณด ์์ ๊ฐ๋ฅ -->
<td>ํฐ๋ฒํธ</td>
<td><input type="text" value="${listDetail.phone}" name="phone"></td>
</tr>
<tr>
<td>์ด๋ฉ์ผ</td><%-- <td><input type="text" value="${listDetail.email}" name="email"></td> --%>
<td>${listDetail.email}</td>
</tr>
<tr><!-- ํ์ ์ ๋ณด ์์ ๊ฐ๋ฅ -->
<td>์ด๋ฆ</td>
<td><input type="text" value="${listDetail.name}" name="name"></td>
</tr>
<tr>
<td>์์ผ</td>
<td>${listDetail.age}</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="์์ " formaction="modify">
<input type="submit" value="์ญ์ " formaction="remove"></td></tr>
</table>
</form>
</body>
</html>
์ฝ๋ 2) MemberController.java
package org.hj.controller;
import javax.servlet.http.HttpSession;
import org.hj.model.LoginVO; //๋ชจ๋ธ(LoginVO)์ด ์์์ ์๋ ค์ค๋ค.
import org.hj.service.LoginService;
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 org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@Controller
public class MemberController { //MVC์ค ์ปจํธ๋กค๋ฌ ์ญํ ์ ํ๋ค.
@Autowired
LoginService ls; //LoginService ls = new LoginService(); ํด๋์ค๋ฅผ new๋ฅผ ์จ์ ๊ฐ์ฒดํํ ๊ฒ.
//LoginService๋ ์ธํฐํ์ด์ค์ด๋ฏ๋ก ์๋ new๋ ์ ๋๋ ๋ฐ ์์ @AutoWired ์ด์ฉํด์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
//1) ํ์๊ฐ์
//ํ๋ฉด ์คํ์ ์ํ ๋ฉค๋ฒ (GET๋ฐฉ์)
@RequestMapping(value = "/member", method = RequestMethod.GET) //member ๋ฉ์๋ GET ๋ฐฉ์
public String member () {
return "member/memberin"; //๋ฉค๋ฒ ํด๋์ memberin.jsp๋ฅผ ์คํํ๋ค.
}
//1.1) ํ์๊ฐ์
์๋ฒ //์ค์ ๋ก ๊ฐ์
ํ๊ธฐ ์ํ ๋ฉค๋ฒ (POST๋ฐฉ์)
@RequestMapping(value = "/member", method = RequestMethod.POST) //๋ ๋ค GET์ด๋ฉด ์ถฉ๋์ด ์ผ์ด๋๋ค. ๋ฉ์๋ ๋ฐฉ์์ด POST์ด๋ค.
// int a //member๋ ์ฐธ์กฐ ๋ณ์
//public String memberPost(String id, String password, String name) //๋ฉ๋ชจ๋ฆฌ ์ฐจ์ง๊ฐ ํฌ๋ฏ๋ก ์ฐ์ง ์๋ ๋ฐฉ๋ฒ์ด๋ค. private ๊ฐ์ ์ ๊ทผ ์ ํ์๋ ์๋ค.
public String memberPost (LoginVO member) { // ๋ชจ๋ธ: LoginVO
System.out.println(member); //member.toString()์ด ์๋ต๋ ๊ฒ์ด๋ค.
//#####์๋ก ์ถ๊ฐํจ#####
ls.memreg(member);
return "board/list"; //board ํด๋์ list.jsp๋ฅผ ์คํํ๋ค. ๊ฒ์ํ ๋ชฉ๋ก์ ๋ณด์ฌ์ค๋ค.
}
//2) ๋ก๊ทธ์ธ ํ์ด์ง
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login () {
System.out.println("aaaa");
return "member/login";
}
//2.1) ๋ก๊ทธ์ธ ์๋ฒ
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String loginPost (HttpSession session, LoginVO member) { //member: login.jsp์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
// HttpSession session = new HttpSession; ์ ()์์ HttpSession session์ ์ง์ฐ๊ณ ๋์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
/* System.out.println("contorller="+member);
System.out.println(ls.login(member));*/
session.setAttribute("login", ls.login(member)); //์ member์ ์์ด๋, ๋น๋ฐ๋ฒํธ๋ฅผ ๊ฐ์ ธ๊ฐ๋ค.
if (ls.login(member)==null) {
return "member/login";
} else {
session.setAttribute("login", ls.login(member)); //null์ด ์๋๋ฉด ์ธ์
์ ์ ์ฅํ๋ค.
return "redirect:/list";
//์๋ ์ฃผ์ ์ ์ํด์ค ๊ฒ ์์ด์ ์ฒ์์ ์๋ฌ๋จ (board์ list.jsp๋ก ๊ฐ๋ ๊ฒ ์๋ ๋ฏ -> member ํด๋์ list.jsp ๋ฐ๋ก ๋ง๋ค์ด์ผํ๋ค.)
//return "/board/list"; //๊ฒ์ํ ๋ฆฌ์คํธ ๋ณด๊ธฐ ์ํด ๋ด๊ฐ ์๋ ์ฝ๋๋ก ๋ฐ๊ฟ.
}
}
//3) ํ์ ๊ด๋ฆฌ ํ์ด์ง (๊ด๋ฆฌ์ ์ ์ฉ)
@RequestMapping(value = "/list", method = RequestMethod.GET) //value:์์ฒญ๋ฐ์ url์ ์ค์ ํ๊ฒ ๋๋ค.
public String mergerlist(Model model) { //์ฒ์ ์๋ฌ ๋ฉ์์ง ์๋ ์ด์ : ๋ฆฌํด์ด ์์ด์ผ ํ๋ค.
//model.addAttribute(String name, Object value);
//: value ๊ฐ์ฒด๋ฅผ name ์ด๋ฆ์ผ๋ก ์ถ๊ฐํจ. ๋ทฐ ์ฝ๋์์๋ name์ผ๋ก ์ง์ ํ ์ด๋ฆ์ ํตํด์ value๋ฅผ ์ฌ์ฉํจ.
model.addAttribute("memlist", ls.memlist()); //ls.memlist()->memlist:๋ฐ์ดํฐ ์ ์ฅํด์ ๋๊ธด๋ค.
return "member/list"; //memberํด๋์ list.jsp ๋ง๋ค์ด์ค๋ค. /WEB-INF/views/member/list.jsp
}
//4) ํ์ ์์ธ ์ ๋ณด ์กฐํ ํ์ด์ง (๊ด๋ฆฌ์ ์ ์ฉ)
@RequestMapping(value = "/listDetail", method = RequestMethod.GET) //list.jsp์ <a>ํ๊ทธ์ ?์ ๋๊ณ ๊ฐ๋ ๊ฒ ์์ผ๋ฉด ๊ฐ์ด ๊ฐ๊ฒ ๋๋ค.
//public String memberDetail(String id) {//๋งค๊ฐ ๋ณ์๋ฅผ ๋๋ค.
public String memberDetail(LoginVO login, Model model) {
// ๋งค๊ฐ๋ณ์๋ฅผ (LoginVO login)๋ก๋ ํด๋ ๋๋ค (private String id๊ฐ ์ ์๋์ด์์ผ๋ฏ๋ก) //์ฒ์ ์๋ฌ ๋ฉ์์ง: ๋ฆฌํด์ด ์์ด์ผ ํ๋ค.
//ls.memlistDetail(id);//[#๋ฉ์๋ ํธ์ถ#]
model.addAttribute("listDetail", ls.memlistDetail(login));
return "member/listDetail"; // /WEB-INF/views/member/listDetail.jsp
}
//5) ํ์ ์ ๋ณด ์์
@RequestMapping(value = "/modify", method = RequestMethod.POST)//๋
ธ์ถ ์ ๋๊ฒ POST๋ฐฉ์์ ์ด๋ค.
public String memberModify(LoginVO login, RedirectAttributes rttr) { //rttr:๋ณ์๋ช
//(String name, String id, String password, String phone)์ผ๋ก๋ ๊ฐ๋ฅํ๊ธด ํ๋ค. ํจ์จ์ ์ด์ง ์์ผ๋ฏ๋ก ์ถ์ฒ๋์ง ์๋๋ค.
ls.memberModify(login);
rttr.addAttribute("id", login.getId());//id๊ฐ์ด ๋์ด๊ฐ๋ค.
return "redirect:/listDetail";//์์ ํ ํ์ ์์ธ ์ ๋ณด ์กฐํ ํ์ด์ง๋ก ๊ฐ๋ค.
}
//6) ํ์ ์ ๋ณด ์ญ์
@RequestMapping(value = "/remove", method = RequestMethod.POST)//๋
ธ์ถ ์ ๋๊ฒ POST๋ฐฉ์์ ์ด๋ค.
public String memberRemove(LoginVO login) {
ls.memberRemove(login);
return "redirect:/list";//์ญ์ ํ ํ์ ๊ด๋ฆฌ ํ์ด์ง๋ก ๊ฐ๋ค.
}
}
์ฝ๋ 3) LoginService.java
package org.hj.service; //LoginService๋ ํจํค์ง ์์ ์๋ค.
import java.util.ArrayList;
import org.hj.model.LoginVO;
//์ธํฐํ์ด์ค(๋๋ฉด): ์ค๊ณํ๋ค. ๋งค๊ฐ ๋ณ์ ๋ฑ ํ์
ํด์ ๋ฏธ๋ฆฌ ์ค๊ณํด๋ ๊ณณ์ด๋ค.
public interface LoginService { //์ธํฐํ์ด์ค๊ฐ new()๋ฅผ ํ ์ ์์ผ๋ฏ๋ก MemberController.java์ @Autowired๋ฅผ ์ค์
//#####์๋ก ์ถ๊ฐํจ#####
//1) ํ์๊ฐ์
public void memreg(LoginVO member); //์ถ์๋ฉ์๋์ด๋ฏ๋ก LoginServiceImpl.java์์ ๊ตฌํํ๋ค.
//2) ๋ก๊ทธ์ธ
public LoginVO login(LoginVO member);
//3) ํ์ ๋ฆฌ์คํธ
public ArrayList<LoginVO> memlist(); //๋น์๋๋ค.
//4) ํ์ ์์ธ ์ ๋ณด ์กฐํ ํ์ด์ง (๊ด๋ฆฌ์ ์ ์ฉ)
//public LoginVO memlistDetail(String id);//[#๋ฉ์๋ ์ ์ธ#] //๋ฆฌํด ํ์
์ ๋ชจ๋ฅด๊ฒ ์ผ๋ฉด ์ฐ์ void๋ก ๋๋ค.
public LoginVO memlistDetail(LoginVO login);
//5) ํ์ ์ ๋ณด ์์
public void memberModify(LoginVO login);
//6) ํ์ ์ ๋ณด ์ญ์
public void memberRemove(LoginVO login);
}
์ฝ๋ 4) LoginServiceImpl.java
package org.hj.service; //ํ์ผ์ ์์น๋ ํจํค์ง๋ฅผ ๋ณด๋ฉด ์ ์ ์๋ค.
import java.util.ArrayList;
import org.hj.mapper.LoginMapper;
import org.hj.model.LoginVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
//๊ตฌํํ๋ค.
@Service
public class LoginServiceImpl implements LoginService { //LoginService๋ฅผ ๊ตฌํํ๋ค.
@Autowired
LoginMapper lm; //LoginMapper lm = new LoginMapper();
//#####์๋ก ์ถ๊ฐํจ#####
//1) ํ์๊ฐ์
public void memreg(LoginVO member) { //์ถ์๋ฉ์๋ LoginSerive.java๋ฅผ ๊ตฌํํ๋ค.
lm.memreg(member);
};
//2) ๋ก๊ทธ์ธ
public LoginVO login (LoginVO member) {
System.out.println("service="+member);
System.out.println("service return="+lm.login(member));
return lm.login(member);
}
//๋น์ฆ๋์ค๊น์ง ๋๋ฌ๋ค. ์๋น์ค -> DB ์ฐ๊ฒฐํด์ผํ๋ค.
//3) ํ์ ๋ฆฌ์คํธ
public ArrayList<LoginVO> memlist() {
return lm.memlist();
}
//4) ํ์ ์์ธ ์ ๋ณด ์กฐํ ํ์ด์ง (๊ด๋ฆฌ์ ์ ์ฉ)
//public LoginVO memlistDetail(String id) {
public LoginVO memlistDetail(LoginVO login) {
return lm.memlistDetail(login);//[#๋ฉ์๋ ํธ์ถ#]
}
//5) ํ์ ์ ๋ณด ์์
public void memberModify(LoginVO login) {
lm.memberModify(login);//[#๋ฉ์๋ ํธ์ถ#]
}
//6) ํ์ ์ ๋ณด ์ญ์
public void memberRemove(LoginVO login) {
lm.memberRemove(login);//[#๋ฉ์๋ ํธ์ถ#]
}
}
์ฝ๋ 5) LoginMapper.java
package org.hj.mapper;
import java.util.ArrayList;
import org.hj.model.LoginVO;
public interface LoginMapper {
//#####์๋ก ์ถ๊ฐํจ#####
//1) ํ์๊ฐ์
public void memreg(LoginVO member);
//2) ๋ก๊ทธ์ธ
public LoginVO login(LoginVO member);
//3) ํ์ ๋ฆฌ์คํธ
public ArrayList<LoginVO> memlist();
//4) ํ์ ์์ธ ์ ๋ณด ์กฐํ ํ์ด์ง (๊ด๋ฆฌ์ ์ ์ฉ)
//public LoginVO memlistDetail(String id);//[#๋ฉ์๋ ์ ์ธ#]
public LoginVO memlistDetail(LoginVO login);
//5) ํ์ ์ ๋ณด ์์
public void memberModify(LoginVO login);
//6) ํ์ ์ ๋ณด ์ญ์
public void memberRemove(LoginVO login);
}
์ฝ๋ 6) LoginMapper.xml
์ฒ์์ ์ค๋ฅ๊ฐ ๋ ์ด์ ๋ <update>, <delete>๋ฅผ ์จ์ผ ํ๋ ๋ฐ ๊ทธ๋๋ก <select>๋ฅผ ์จ์์ด๋ค.
<?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="org.hj.mapper.LoginMapper">
<!-- #####์๋ก ์ถ๊ฐํจ##### -->
<!-- 1) ํ์๊ฐ์
-->
<insert id="memreg"> <!-- LoginMapper.java์ memreg๋ฅผ ์ฐ๊ฒฐํ๋ค. insertํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค.-->
insert into member (id, password, name, birthday, gender)
values(#{id},#{password},#{name},sysdate(),"f");
</insert>
<!-- 2) ๋ก๊ทธ์ธ -->
<select id="login" resultType="org.hj.model.LoginVO"> <!-- ๊ตฌํ๋ฉ์๋๊ฐ ์์ผ๋๊น return์ด ์๋ค. -->
<!-- ๋์ select๋ resultType์ด๋ผ๋ ํ์
์ด return ์ญํ ์ด๋ค. -->
select id, password <!-- ๊ฒฐ๊ณผ๋ ํ ๊ฑด์ด๋ค. id๋ ๊ธฐ๋ณธํค์ด๋ค. -->
from member
where id=#{id} and password=#{password}
</select>
<!-- 3) ํ์ ๊ด๋ฆฌ ๋ฆฌ์คํธ ํ์ด์ง -->
<select id="memlist" resultType="org.hj.model.LoginVO">
select * from member <!-- ๊ฒฐ๊ณผ๋ ์ฌ๋ฌ ๊ฑด์ด๋ค. LoginVOํ์
์ ๋ฐฐ์ด์ด ํ์ํ๋ค!-->
</select>
<!-- 4) ํ์ ์์ธ ์ ๋ณด ์กฐํ ํ์ด์ง (๊ด๋ฆฌ์ ์ ์ฉ) -->
<select id="memlistDetail" resultType="org.hj.model.LoginVO"> <!-- select๋ ๊ฒฐ๊ณผ๋ฅผ org.hj.model.LoginVO ํด๋์ค์ ์ ์ฅํ๋ค. -->
select *
from member
where id=#{id} <!-- id๋ฅผ ๋๊ณ ์ค๋ ์์
์ด ํ์ํ๋ค. ๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ก ๊ฐ๋ฅํ๋ค. ์ด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ: String id, LoginVO๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค.-->
</select>
<!-- 5) ํ์ ์ ๋ณด ์์ -->
<update id="memberModify">
update member <!-- update ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ด์ฃผ๋ ๊ฒ์ด ์๋๋ผ ๋ค์ select๋ฅผ ํ๋ค. -->
set name = #{name},
password = #{password},
phone = #{phone}
where id = #{id}
</update>
<!-- 6) ํ์ ์ ๋ณด ์ญ์ -->
<delete id="memberRemove">
delete from member
where id = #{id}
</delete>
</mapper>
๊ฒฐ๊ณผ) ํ์ ์ ๋ณด ์์ ํ๊ธฐ
id0329๋ฅผ ์์ ๋ฐ ์ญ์ ํ๊ธฐ๋ก ํ๋ค.
๊ฒฐ๊ณผ) ํ์ ์ ๋ณด ์ญ์ ํ๊ธฐ