package db.demo3;
import java.sql.Date;
public class UserVO {
private String id;
private String name;
private String pwd;
private String phone;
private String email;
private int point;
private Date createDate;
public UserVO(String id, String name, String pwd, String phone, String email, int point, Date createDate) {
super();
this.id = id;
this.name = name;
this.pwd = pwd;
this.phone = phone;
this.email = email;
this.point = point;
this.createDate = createDate;
}
public UserVO() {}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
}
package db.demo3;
import java.util.ArrayList;
public class UserService {
UserDAO userDao = new UserDAO();
public void removeUser(String id) throws Exception {
UserVO user = userDao.getUserById(id);
if (user == null) {
throw new Exception("사용자 정보가 존재하지 않습니다.");
}
userDao.deleteUser(id);
}
public void modifyUserInfo(UserVO newUser) throws Exception {
UserVO user = userDao.getUserById(newUser.getId());
if (user == null) {
throw new Exception("사용자 정보가 존재하지 않습니다.");
}
user.setName(newUser.getName());
user.setPhone(newUser.getPhone());
user.setEmail(newUser.getEmail());
userDao.updateUser(user);
}
public UserVO findUserById(String id) throws Exception {
UserVO user = userDao.getUserById(id);
if (user == null) {
throw new Exception("[" + id + "]에 해당하는 사용자 정보를 찾을 수 없습니다.");
}
return user;
}
public ArrayList<UserVO> searchUsers(String name) throws Exception {
ArrayList<UserVO> users = userDao.searchUsersByName(name);
if (users.isEmpty()) {
throw new Exception("[" + name + "]에 해당하는 사용자 정보를 찾을 수 없습니다.");
}
// 검색된 정보가 있을 경우에만 정보를 반환함
return users;
}
public ArrayList<UserVO> getAllUsers() throws Exception {
ArrayList<UserVO> users = userDao.getAllUsers();
return users;
}
public void addNewUser(UserVO user) throws Exception {
// 사용자가 입력한 아이디로 사용자 정보를 조회한다.
UserVO dbUser = userDao.getUserById(user.getId());
// 이미 등록된 사용자 정보가 존재하는지 체크한다.
if (dbUser != null) {
throw new Exception("동일한 아이디를 가진 사용자가 이미 존재합니다.");
}
// 등록된 사용자 정보가 없으면 신규 사용자로 등록한다.
userDao.addUser(user);
}
}
package db.demo3;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import db.utils.ConnectionUtils;
public class UserDAO {
// 사용자 정보 변경하기
public void updateUser(UserVO user) throws Exception {
String sql = "update store_users set user_name = ? , user_phone = ?, user_email = ? where user_id = ?";
Connection con = ConnectionUtils.getConnection();
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, user.getName());
pstmt.setString(2, user.getPhone());
pstmt.setString(3, user.getEmail());
pstmt.setString(4, user.getId());
pstmt.executeUpdate();
pstmt.close();
con.close();
}
// 새로운 사용자 정보 추가하기
public void addUser(UserVO user) throws Exception {
String sql = "insert into store_users (user_id, user_name, user_pwd, user_phone, user_email, user_point) "
+ "values (?, ?, ?, ?, ?, 0)";
Connection con = ConnectionUtils.getConnection();
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, user.getId());
pstmt.setString(2, user.getName());
pstmt.setString(3, user.getPwd());
pstmt.setString(4, user.getPhone());
pstmt.setString(5, user.getEmail());
pstmt.executeUpdate();
pstmt.close();
con.close();
}
// 지정된 아이디에 해당하는 사용자 정보 삭제하기
public void deleteUser(String id) throws Exception {
String sql = "delete from store_users where user_id = ?";
Connection con = ConnectionUtils.getConnection();
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.executeUpdate();
pstmt.close();
con.close();
}
// 지정된 이름에 해당하는 사용자 정보 조회하기
public ArrayList<UserVO> searchUsersByName(String name) throws Exception {
ArrayList<UserVO> users = new ArrayList<UserVO>();
String sql = "select * from store_users where user_name = ?";
Connection con = ConnectionUtils.getConnection();
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, name);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
UserVO user = new UserVO();
user.setId(rs.getString("user_id"));
user.setName(rs.getString("user_name"));
user.setPwd(rs.getString("user_pwd"));
user.setPhone(rs.getString("user_phone"));
user.setEmail(rs.getString("user_email"));
user.setPoint(rs.getInt("user_point"));
user.setCreateDate(rs.getDate("user_create_date"));
users.add(user);
}
rs.close();
pstmt.close();
con.close();
return users;
}
// 지정된 아이디에 해당하는 사용자 정보 조회하기 1
public UserVO getUserById (String id) throws Exception {
UserVO user = null;
String sql = "select * from store_users where user_id = ?";
Connection con = ConnectionUtils.getConnection();
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
user = new UserVO();
//UserVO user = new UserVO();
user.setId(rs.getString("user_id"));
user.setName(rs.getString("user_name"));
user.setPwd(rs.getString("user_pwd"));
user.setPhone(rs.getString("user_phone"));
user.setEmail(rs.getString("user_email"));
user.setPoint(rs.getInt("user_point"));
user.setCreateDate(rs.getDate("user_create_date"));
}
rs.close();
pstmt.close();
con.close();
return user;
}
// 전체 사용자 정보 조회하기
public ArrayList<UserVO> getAllUsers() throws Exception {
ArrayList<UserVO> users = new ArrayList<UserVO>();
String sql = "select * from store_users order by user_id asc";
Connection con = ConnectionUtils.getConnection();
PreparedStatement pstmt = con.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
String id = rs.getString("user_id");
String name = rs.getString("user_name");
String pwd = rs.getString("user_pwd");
String phone = rs.getString("user_phone");
String email = rs.getString("user_email");
int point = rs.getInt("user_point");
Date createDate = rs.getDate("user_create_date");
UserVO user = new UserVO();
user.setId(id);
user.setName(name);
user.setPwd(pwd);
user.setPhone(phone);
user.setEmail(email);
user.setPoint(point);
user.setCreateDate(createDate);
users.add(user);
}
rs.close();
pstmt.close();
con.close();
return users;
}
}
package db.demo3;
import java.util.ArrayList;
import java.util.Scanner;
public class UserApp {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
UserService service = new UserService();
while (true) {
try {
System.out.println("1. 가입 2. 전체 조회 3. 이름 검색 4. 아이디 검색 5. 삭제 6. 경로 변경 0. 종료");
System.out.println("메뉴 선택> ");
int menu = scanner.nextInt();
if (menu == 1) {
System.out.println("[회원 가입]");
System.out.println("아이디 입력> ");
String id = scanner.next();
System.out.println("이름 입력> ");
String name = scanner.next();
System.out.println("비밀번호 입력> ");
String pwd = scanner.next();
System.out.println("전화번호 입력> ");
String phone = scanner.next();
System.out.println("이메일 입력> ");
String email = scanner.next();
UserVO user = new UserVO();
user.setId(id);
user.setName(name);
user.setPwd(pwd);
user.setPhone(phone);
user.setEmail(email);
service.addNewUser(user);
} else if (menu == 2) {
System.out.println("[전체 조회]");
ArrayList<UserVO> users = service.getAllUsers();
if (users.isEmpty()) {
System.out.println("조회된 사용자 정보가 없습니다.");
} else {
for (UserVO user : users) {
System.out.println("아이디: " + user.getId());
System.out.println("이름: " + user.getName());
System.out.println("연락처: " + user.getPhone());
System.out.println();
}
}
} else if (menu == 3) {
System.out.println("[이름으로 검색하기]");
System.out.println("검색할 이름 입력> ");
String name = scanner.next();
ArrayList<UserVO> users = service.searchUsers(name);
for (UserVO user : users) {
System.out.println("아이디: " + user.getId());
System.out.println("이름: " + user.getName());
System.out.println("연락처: " + user.getPhone());
System.out.println();
}
} else if (menu == 4) {
System.out.println("[아이디로 검색하기]");
System.out.println("검색할 아이디 입력> ");
String id = scanner.next();
UserVO user = service.findUserById(id);
System.out.println("아이디: " + user.getId());
System.out.println("이름: " + user.getName());
System.out.println("연락처: " + user.getPhone());
System.out.println("이메일: " + user.getEmail());
System.out.println("포인트: " + user.getPoint());
System.out.println("가입일: " + user.getCreateDate());
System.out.println();
} else if (menu == 5) {
System.out.println("[사용자 정보 삭제]");
System.out.println("삭제 대상 아이디 입력> ");
String id = scanner.next();
service.removeUser(id);
} else if (menu == 6) {
System.out.println("[사용자 정보 업데이트]");
System.out.println("변경 대상 아이디 입력> ");
String id = scanner.next();
System.out.println("새 이름 입력> ");
String name = scanner.next();
System.out.println("새 연락처 입력> ");
String phone = scanner.next();
System.out.println("새 이메일 입력> ");
String email = scanner.next();
UserVO user = new UserVO();
user.setId(id);
user.setName(name);
user.setPhone(phone);
user.setEmail(email);
service.modifyUserInfo(user);
} else if (menu == 0) {
break;
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println();
}
scanner.close();
}
}