https://www.notion.so/JDBC-MVC-1e4b46ed481e8027aaf1c2baf263f2dc

<MODEL MEMBER DAO>

package model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class MemberDAO {

	// 전체 회원 목록을 조회하는 메서드 (현재는 미구현 상태)
	private ArrayList<MemberDTO> selectAll(MemberDTO dto) {
		return null; // 나중에 전체 조회 로직을 구현할 수 있음
	}

	// 특정 회원을 ID와 비밀번호로 조회하는 메서드 (로그인 용도)
	public MemberDTO selectOne(MemberDTO dto) {
		MemberDTO data = null; // 조회된 회원 정보를 담을 DTO

		// JDBC 드라이버 및 DB 접속 정보
		final String driverName = "com.mysql.cj.jdbc.Driver";
		final String url = "jdbc:mysql://localhost:3306/DB명";
		final String userName = "root";
		final String password = "0000";

		// 로그인 조건에 맞는 회원을 조회하는 SQL
		final String sql = "SELECT * FROM MEMBER WHERE MEMBER_ID=? AND MEMBER_PASSWORD=?";

		Connection conn = null;
		PreparedStatement pstmt = null;

		try {
			// 1. 드라이버 로드
			Class.forName(driverName);
			
			// 2. DB 연결
			conn = DriverManager.getConnection(url, userName, password);
			
			// 3. SQL 준비
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, dto.getMember_id());       // 1번 물음표에 아이디 바인딩
			pstmt.setString(2, dto.getMember_password()); // 2번 물음표에 비밀번호 바인딩
		
			// 4. SQL 실행 및 결과 처리
			ResultSet rs = pstmt.executeQuery();
			if (rs.next()) { // 결과가 존재하면 DTO에 데이터 저장
				data = new MemberDTO();
				data.setMember_id(rs.getString("MEMBER_ID"));
				data.setMember_password(rs.getString("MEMBER_PASSWORD"));
				data.setMember_name(rs.getString("MEMBER_NAME"));
			}
			return data; // 결과가 없으면 null 반환
		} catch (Exception e) {
			// 예외 발생 시에도 data 반환 (null 또는 값)
			return data;
		} finally {
			// 사용한 리소스 정리 (예외 발생 시에도 실행됨)
			try {
				if (pstmt != null) pstmt.close();
				if (conn != null) conn.close();
			} catch (SQLException e) {
				e.printStackTrace(); // 리소스 정리 중 예외 발생 시 출력
			}
		}
	}
}

<VIEW>

package view;

import java.util.Scanner;

import model.MemberDTO;

public class View {
	private Scanner sc;
	public View() {
		this.sc=new Scanner(System.in);
	}
	public void printMenuLogin() {
		System.out.println("1.이름변경");
		System.out.println("2.회원탈퇴");
		System.out.println("3.글작성");
		System.out.println("4.글선택");
		System.out.println("5.글삭제");
		System.out.println("6.로그아웃");
	}
	public void printMenuLogout() {
		System.out.println("7.회원가입");
		System.out.println("8.로그인");
		System.out.println("9.목록출력");
		System.out.println("10.검색");
		System.out.println("0.프로그램 종료");
	}
	public int inputAction() {
		return sc.nextInt();
	}
	public MemberDTO inputMemberDTO() {
		System.out.print("아이디>> ");
		String mid=sc.next();
		System.out.print("비밀번호>> ");
		String password=sc.next();
		
		// 빈 MemberDTO에 객체 생성
		MemberDTO memberDTO=new MemberDTO();
		memberDTO.setMember_id(mid);
		memberDTO.setMember_password(password);
		memberDTO.setMember_name(name);
		return memberDTO;
	}
	public MemberDTO login() {
		System.out.print("아이디>> ");
		String mid=sc.next();
		System.out.print("비밀번호>> ");
		String password=sc.next();
		MemberDTO memberDTO=new MemberDTO();
		memberDTO.setMember_id(mid);
		memberDTO.setMember_password(password);
		return memberDTO;
	}
	public String inputName() {
		System.out.print("이름>> ");
		String name=sc.next();
		return name;
	}
}

<controller>