728x90
다중 VO
객체의 자료형이 다르면 VO / DAO를 분리하여 만들어야 합니다.
Model
package model;
import java.util.ArrayList;
// 회원목록출력
// 회원가입,로그인,로그아웃,마이페이지,회원탈퇴
public class MemberDAO {
private ArrayList<MemberVO> datas;
public MemberDAO() {
datas=new ArrayList<MemberVO>();
datas.add(new MemberVO("admin","1234","관리자"));
datas.add(new MemberVO("coding_helper","timo","작은 티모"));
}
public ArrayList<MemberVO> selectAll(MemberVO mVO){
return datas;
}
public MemberVO selectOne(MemberVO mVO){
return null;
}
// mVO가 의미하는것 == 회원가입할 정보
public boolean insert(MemberVO mVO) {
// mVO를 datas에 넣어줄예정
// PK 중복검사를 해야하고, 성공하면 add()
boolean flag = false;
for (MemberVO data : datas) {
if (data.equals(mVO)) {
flag = true;
System.out.println(" 로그: MemberDAO: insert(): 아이디 중복");
break;
}
}
if (flag) {
// 실패하면 false 반환
return false;
}
// datas에 mVO정보를 저장 add()
datas.add(new MemberVO(mVO.getMid(), mVO.getMpw(), mVO.getName()));
/* 1) datas.add(new MemberVO());
* -> datas DB공간에 new 새로운 데이터터를 추가
* 2) MemberVO(데이터1, 데이터2, 데이터3)
* -> 데이터들을 mVO에서 추출하면됨
*/
return true;
}
public boolean update(MemberVO mVO) {
return true;
}
public boolean delete(MemberVO mVO) {
return true;
}
}
MemberDAO.java
package model;
public class MemberVO {
private String mid; // 아이디 PK
// : 일반적으로 PK는 시스템에서 부여함
// : 사용자가 등록 --->> 중복검사필수☆
private String mpw; // 비밀번호
private String name; // 회원의이름
public MemberVO(String mid,String mpw,String name) {
this.mid=mid;
this.mpw=mpw;
this.name=name;
}
public String getMid() {
return mid;
}
public void setMid(String mid) {
this.mid = mid;
}
public String getMpw() {
return mpw;
}
public void setMpw(String mpw) {
this.mpw = mpw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return this.name+"님";
}
@Override
public boolean equals(Object obj) {
// 아이디(mid)가 같다면, 같은객체!
MemberVO mVO = (MemberVO)obj;
if (this.mid.equals(mVO.mid)) {
return true;
}
return false;
}
}
MemberVO.java
package model;
import java.util.ArrayList;
// 목록출력,목록검색_이름,목록검색_가격순,목록검색_조회수
public class ProductDAO {
private ArrayList<ProductVO> datas;
private static int PK=1001;
public ProductDAO() {
datas=new ArrayList<ProductVO>();
datas.add(new ProductVO(PK++,"장갑",12000,2));
datas.add(new ProductVO(PK++,"화장지",1000,1));
datas.add(new ProductVO(PK++,"장화",23000,0));
datas.add(new ProductVO(PK++,"지갑",120000,1));
datas.add(new ProductVO(PK++,"화분",5500,2));
}
public ArrayList<ProductVO> selectAll(ProductVO pVO){
// 높은 응집도를 위해
// 여러기능을 하나의 메서드에서 작성
if (pVO == null) {
return datas;
} else if (pVO.getName().equals("expensive")) {
ArrayList<ProductVO> mdatas = new ArrayList<ProductVO>();
for (ProductVO data : datas) {
if (data.getPrice() > pVO.getPrice()) {
mdatas.add(data);
}
}
return mdatas;
} else if (pVO.getName().equals("cheap")) {
ArrayList<ProductVO> mdatas = new ArrayList<ProductVO>();
for (ProductVO data : datas) {
if (data.getPrice() < pVO.getPrice()) {
mdatas.add(data);
}
}
return mdatas;
} else if (pVO.getName().equals("filter")) { // searchCondition
ArrayList<ProductVO> mdatas = new ArrayList<ProductVO>();
for (ProductVO data : datas) {
if (data.getPrice() > pVO.getPrice() && data.getPrice() < pVO.getCnt()) {
mdatas.add(data);
}
}
return mdatas;
} else {
// 상품목록출력을 할때에는 인자(pVO)가 null이므로
// pVO가 null이 아니라면 이름으로 검색임!
ArrayList<ProductVO> mdatas = new ArrayList<ProductVO>();
for (ProductVO data : datas) {
if (data.getName().contains(pVO.getName())) {
// pVO.getName() == 사용자가 검색한 단어
mdatas.add(data);
}
}
return mdatas;
}
}
public ProductVO selectOne(ProductVO pVO){
if (pVO.getName().equals("expensive")) {
int max = datas.get(0).getPrice();
int maxIndex = 0;
for (int i = 1; i < datas.size(); i++) {
if (max < datas.get(i).getPrice()) {
max = datas.get(i).getPrice();
maxIndex = i;
}
}
return datas.get(maxIndex);
} else if (pVO.getName().equals("cheap")) {
int minIndex = 0;
for (int i = 1; i < datas.size(); i++) {
if (datas.get(minIndex).getPrice() > datas.get(i).getPrice()) {
minIndex = i;
}
}
return datas.get(minIndex);
} else {
return pVO;
}
}
public boolean insert(ProductVO pVO) {
return true;
}
public boolean update(ProductVO pVO) {
return true;
}
public boolean delete(ProductVO pVO) {
return true;
}
}
ProductDAO.java
package model;
public class ProductVO {
private int num; // PK
private String name;
private int price;
private int cnt; // 조회수
public ProductVO(int num,String name,int price,int cnt) {
this.num=num;
this.name=name;
this.price=price;
this.cnt=cnt;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getCnt() {
return cnt;
}
public void setCnt(int cnt) {
this.cnt = cnt;
}
@Override
public String toString() {
String msg=num+". "+name+" "+price+"원 ["+cnt+"]";
return msg;
}
}
ProductVO.java
GitHub
https://github.com/Qkrwnsgus0522/Java
728x90