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();
	}
}

'자바 > jdbc' 카테고리의 다른 글

utils  (0) 2019.06.10
demo2  (0) 2019.06.10
demo1  (0) 2019.06.10

+ Recent posts