๐ 2024. 01. 11 24์ผ์ฐจ
- member join ์ฒ๋ผ member login ๋ง๋ค์ด์ค์ผ ํ์ง ์์๊น??
- ID์ ์ ๋ ฅ ๋ฐ๊ฒ ํ๊ณ ๋ง๋ค์ด์ง ID๊ฐ ์๋ ์ง ํ์ธ ํด์ผ๋จ
- ์ด๊ฑฐ?? ํ์๊ฐ์ ํ ๋ ๋ง๋ค์ด ๋จ๋๋ฐ?? ๊ทธ๋ผ ๊ฐ์ ธ์๋ ๋์ง ์์๊น?
- ์์ผ๋ฉด false๋ก continue ์์ผ์ ๋ค์ while๋ฌธ์ผ๋ก ์ฌ๋ ค๋ฒ๋ฆฐ๋ค.
- ์์ผ๋ฉด true๋ก ๋๊ธด๋ค??
- ๋น๋ฐ๋ฒํธ ํ์ธ๋ ์ด๋ฏธ ๋ง๋ค์ด๋จ๋๋ฐ? ๊ฐ์ ธ์์ ์์ ํ์.
- ์์ ID๋ฅผ ์ ๋ ฅ ํ์ ๋ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ ์ ๋ ฅํ PW์ ID์ PW์ ์ผ์นํ์ง ํ์ธํด์ผ๋์ง ์์๊น?
if (cmd.equals("member login")) {
memberController.login();
public void login() {
String loginId = null;
String loginPw = null;
System.out.println("==๋ก๊ทธ์ธ==");
while (true) {
System.out.print("๋ก๊ทธ์ธ ์์ด๋ : ");
loginId = sc.nextLine().trim();
if (loginId.length() == 0 || loginId.contains(" ")) {
System.out.println("์์ด๋ ๋๋ฐ๋ก ์
๋ ฅํด");
continue;
}
boolean isLoginIdDup = memberService.isLoginIdDup(loginId);
if (isLoginIdDup == false) {
System.out.println(loginId + "๋(์) ์๋๋์ด์ผ");
continue;
}
break;
}
Member member = memberService.getMemberByLoginId(loginId);
while (true) {
System.out.print("๋น๋ฐ๋ฒํธ : ");
loginPw = sc.nextLine().trim();
if (loginPw.length() == 0 || loginPw.contains(" ")) {
tryCount++;
System.out.println("๋น๋ฐ๋ฒํธ ๋๋ฐ๋ก ์
๋ ฅํด");
continue;
}
if (member.getLoginPw().equals(loginPw) == false) {
tryCount++;
System.out.println("์ผ์นํ์ง ์์");
continue;
}
System.out.println(member.getName() + "๋ ํ์");
break;
}
}
public boolean isLoginIdDup(String loginId) {
return memberDao.isLoginIdDup(loginId);
}
public Member getMemberByLoginId(String loginId) {
return memberDao.getMemberByLoginId(loginId);
}
public Member getMemberByLoginId(String loginId) {
SecSql sql = new SecSql();
sql.append("SELECT *");
sql.append("FROM `member`");
sql.append("WHERE loginId = ?;", loginId);
Map<String, Object> memberMap = DBUtil.selectRow(conn, sql);
if (memberMap.isEmpty()) {
return null;
}
return new Member(memberMap);
}
public boolean isLoginIdDup(String loginId) {
SecSql sql = new SecSql();
sql.append("SELECT COUNT(*) > 0");
sql.append("FROM `member`");
sql.append("WHERE loginId = ?;", loginId);
return DBUtil.selectRowBooleanValue(conn, sql);
}
int tryMaxCount = 3;
int tryCount = 0;
while (true) {
if (tryCount >= tryMaxCount) {
System.out.println("๋ค์ ํ์ธํ๊ณ ์๋ํด๋ผ");
break;
}
if (cmd.equals("member profile")) {
memberController.showProfile();
public void showProfile() {
if (Container.session.isLogined() == false) {
System.out.println("๋ก๊ทธ์ธ ํ ์ด์ฉํด์ค");
return;
}
System.out.println(Container.session.loginedMember);
}
public class Session {
public Member loginedMember;
public int loginedMemberId;
public Session() {
loginedMemberId = -1;
}
public void login(Member member) {
loginedMember = member;
loginedMemberId = member.getId();
}
๋ก๊ทธ์์ ํ๊ณ ์จ ํ๊ณ ๋ฆฌํด์์ผ์คฌ๋ค.if (Container.session.isLogined()) {
System.out.println("๋ก๊ทธ์์ ํ๊ณ ์จ");
return;
}
if (cmd.equals("member logout")) {
memberController.logout();
public void logout() {
if (Container.session.isLogined() == false) {
System.out.println("๋ก๊ทธ์ธ ํ ์ด์ฉํด์ค");
return;
}
Container.session.logout();
}
public void logout() {
loginedMember = null;
loginedMemberId = -1;
System.out.println("๋ก๊ทธ์์ ๋จ");
}
public boolean isLogined() {
return loginedMemberId != -1;
}
}
if (Container.session.isLogined() == false) {
System.out.println("๋ก๊ทธ์ธ ํ ์ด์ฉํด์ค");
return;
}
SELECT *
FROM article
INNER JOIN `member`
ON article.id = `member`.id
ORDER BY article.id DESC;
sql.append("SELECT A.*, M.name AS extra__writer");
sql.append("FROM article AS A");
sql.append("INNER JOIN `member` AS M");
sql.append("ON A.memberId = M.id");
sql.append("ORDER BY id DESC;");
๊ฒ์ ์๋ ํ์ธ
SELECT SQL_NO_CACHE *
FROM `member`
WHERE loginId = 'test1';
ํ์ฌ ๋ฌธ์ ์
๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ??
ALTER TABLE `member` ADD INDEX('loginId');
์ธ๋ฑ์ค ์ฐ๋ ์ง ํ์ธ
EXPLAIN SELECT SQL_NO_CACHE *
FROM `member`
WHERE loginId = 'test1';
- ๋ก๊ทธ์ธ, ๋ก๊ทธ์์ ๋ณต์ต
- ๊ฒ์๋ฌผ ์์ , ์ญ์ ๋ณต์ต