From 33070d1dc69256bebf51df861fa0fd038d267afd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E5=8E=9F=E3=80=80=E5=8F=B6=E5=A4=A7?= <26-k-ishihara-acrowavenet@it-college.co.jp> Date: Fri, 30 Oct 2026 17:02:38 +0900 Subject: [PATCH] =?UTF-8?q?10/30=209-1=E3=81=BE=E3=81=A7=E5=AE=8C=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rhizome/example/dao/DepartmentDAO.java | 168 +++++++++----- src/com/rhizome/example/dao/EmployeeDAO.java | 205 ++++++++++++++++++ src/com/rhizome/example/main/Main.java | 175 +++++++++++++-- 3 files changed, 464 insertions(+), 84 deletions(-) diff --git a/src/com/rhizome/example/dao/DepartmentDAO.java b/src/com/rhizome/example/dao/DepartmentDAO.java index 7dc9fbb..b8e573c 100644 --- a/src/com/rhizome/example/dao/DepartmentDAO.java +++ b/src/com/rhizome/example/dao/DepartmentDAO.java @@ -106,89 +106,137 @@ public class DepartmentDAO { return rtnList; } + //部署名検索 + public List selectByName(String name) throws SQLException { + //戻り値用リスト + List rtnList = new ArrayList<>(); + //SQL作成 + StringBuilder sql = new StringBuilder(); + + sql.append(" SELECT * "); + sql.append(" FROM department "); + sql.append(" WHERE nm_department = ? "); + + try { + //PreparedStatement生成 + stmt = con.prepareStatement(sql.toString()); + //部署名を設定 + stmt.setString(1, name); + //SQL実行 + rs = stmt.executeQuery(); + //検索結果をDTOへ格納 + while (rs.next()) { + //DTO生成 + DepartmentDTO dto = new DepartmentDTO(); + //検索結果をDTOへセット + dto.setIdDepartment(rs.getInt(ID_DEPARTMENT)); + dto.setNmDepartment(rs.getString(NM_DEPARTMENT)); + + //リストへ追加 + rtnList.add(dto); + } + + } finally { + + DbUtil.closeStatement(stmt); + } + + //検索結果を返却 + return rtnList; + } + //部署情報削除 public void deptDelete(int id) throws SQLException { - //SQL作成 - StringBuilder sql = new StringBuilder(); - sql.append(" DELETE "); - sql.append(" FROM "); - sql.append(" " + TBL_NAME); - sql.append(" WHERE "); - sql.append(" " + ID_DEPARTMENT + " = ?"); + //SQL作成 + StringBuilder sql = new StringBuilder(); + sql.append(" DELETE "); + sql.append(" FROM "); + sql.append(" " + TBL_NAME); + sql.append(" WHERE "); + sql.append(" " + ID_DEPARTMENT + " = ?"); - try { - //PreparedStatement生成 - stmt = con.prepareStatement(sql.toString()); - //値設定 - stmt.setInt(1, id); - //SQL実行 - stmt.executeUpdate(); + try { + //PreparedStatement生成 + stmt = con.prepareStatement(sql.toString()); + //値設定 + stmt.setInt(1, id); + //SQL実行 + stmt.executeUpdate(); - } finally { + } finally { - DbUtil.closeStatement(stmt); - } + DbUtil.closeStatement(stmt); + } } - + //部署情報登録 public void deptInsert( - String departmentName) - throws SQLException { - //SQL作成 - StringBuilder sql = new StringBuilder(); + String departmentName) + throws SQLException { + //SQL作成 + StringBuilder sql = new StringBuilder(); - sql.append(" INSERT INTO department "); - sql.append(" ( "); - sql.append(" nm_department "); - sql.append(" ) "); - sql.append(" VALUES "); - sql.append(" (?) "); + sql.append(" INSERT INTO department "); + sql.append(" ( "); + sql.append(" nm_department "); + sql.append(" ) "); + sql.append(" VALUES "); + sql.append(" (?) "); - try { + try { - //PreparedStatement生成 - stmt = con.prepareStatement(sql.toString()); - //値設定 - stmt.setString(1, departmentName); - //SQL実行 - stmt.executeUpdate(); + //PreparedStatement生成 + stmt = con.prepareStatement(sql.toString()); + //値設定 + stmt.setString(1, departmentName); + //SQL実行 + stmt.executeUpdate(); - } finally { + } finally { - DbUtil.closeStatement(stmt); - } + DbUtil.closeStatement(stmt); + } } - + //部署情報更新 public void deptUpdate( - int id, - String departmentName) - throws SQLException { + int id, + String departmentName) + throws SQLException { - //SQL作成 - StringBuilder sql = new StringBuilder(); + //SQL作成 + StringBuilder sql = new StringBuilder(); - sql.append(" UPDATE department "); - sql.append(" SET "); - sql.append(" nm_department = ? "); - sql.append(" WHERE id_department = ? "); + sql.append(" UPDATE department "); + sql.append(" SET "); + sql.append(" nm_department = ? "); + sql.append(" WHERE id_department = ? "); - try { + try { - //PreparedStatement生成 - stmt = con.prepareStatement(sql.toString()); - //値設定 - stmt.setString(1, departmentName); - stmt.setInt(2, id); + //PreparedStatement生成 + stmt = con.prepareStatement(sql.toString()); + //値設定 + stmt.setString(1, departmentName); + stmt.setInt(2, id); - //SQL実行 - stmt.executeUpdate(); + //SQL実行 + stmt.executeUpdate(); - } finally { + } finally { - //Statement切断 - DbUtil.closeStatement(stmt); - } + //Statement切断 + DbUtil.closeStatement(stmt); + } + } + + //部署ID存在確認 + public boolean existsDepartment(int idDepartment) + throws SQLException { + + List deptList = selectById(idDepartment); + + return deptList.size() > 0; } } diff --git a/src/com/rhizome/example/dao/EmployeeDAO.java b/src/com/rhizome/example/dao/EmployeeDAO.java index 3dee750..c020ee2 100644 --- a/src/com/rhizome/example/dao/EmployeeDAO.java +++ b/src/com/rhizome/example/dao/EmployeeDAO.java @@ -138,6 +138,211 @@ public class EmployeeDAO { return rtnList; } + // 社員名検索 + public List selectByName(String name) throws SQLException { + //戻り値用リスト + List rtnList = new ArrayList<>(); + //SQL作成 + StringBuilder sql = new StringBuilder(); + + sql.append(" SELECT "); + sql.append(" employee.id_employee "); + sql.append(" ,employee.nm_employee "); + sql.append(" ,employee.kn_employee "); + sql.append(" ,employee.mail_address "); + sql.append(" ,employee.password "); + sql.append(" ,employee.id_department "); + sql.append(" ,department.nm_department "); + sql.append(" FROM employee "); + sql.append(" INNER JOIN department "); + sql.append(" ON employee.id_department = department.id_department "); + sql.append(" WHERE employee.nm_employee = ? "); + + try { + + //PreparedStatement生成 + stmt = con.prepareStatement(sql.toString()); + + //社員名を設定 + stmt.setString(1, name); + + //SQL実行 + rs = stmt.executeQuery(); + + //検索結果をDTOへ格納 + while (rs.next()) { + + //DTO生成 + EmployeeDTO dto = new EmployeeDTO(); + + //検索結果をDTOへセット + dto.setIdEmployee(rs.getInt(ID_EMPLOYEE)); + dto.setNmEmployee(rs.getString(NM_EMPLOYEE)); + dto.setKnEmployee(rs.getString(KN_EMPLOYEE)); + dto.setMailAddress(rs.getString(MAIL_ADDRESS)); + dto.setPassword(rs.getString(PASSWORD)); + dto.setIdDepartment(rs.getInt(ID_DEPARTMENT)); + dto.setNmDepartment(rs.getString(NM_DEPARTMENT)); + + //リストへ追加 + rtnList.add(dto); + } + + } finally { + + DbUtil.closeStatement(stmt); + } + + //検索結果を返却 + return rtnList; + } + + //フリガナ検索 + public List selectByKana(String kana) throws SQLException { + //戻り値用リスト + List rtnList = new ArrayList<>(); + //SQL作成 + StringBuilder sql = new StringBuilder(); + + sql.append(" SELECT "); + sql.append(" employee.id_employee "); + sql.append(" ,employee.nm_employee "); + sql.append(" ,employee.kn_employee "); + sql.append(" ,employee.mail_address "); + sql.append(" ,employee.password "); + sql.append(" ,employee.id_department "); + sql.append(" ,department.nm_department "); + sql.append(" FROM employee "); + sql.append(" INNER JOIN department "); + sql.append(" ON employee.id_department = department.id_department "); + sql.append(" WHERE employee.kn_employee = ? "); + + try { + //PreparedStatement生成 + stmt = con.prepareStatement(sql.toString()); + //フリガナ設定 + stmt.setString(1, kana); + //SQL実行 + rs = stmt.executeQuery(); + + while (rs.next()) { + + EmployeeDTO dto = new EmployeeDTO(); + + dto.setIdEmployee(rs.getInt(ID_EMPLOYEE)); + dto.setNmEmployee(rs.getString(NM_EMPLOYEE)); + dto.setKnEmployee(rs.getString(KN_EMPLOYEE)); + dto.setMailAddress(rs.getString(MAIL_ADDRESS)); + dto.setPassword(rs.getString(PASSWORD)); + dto.setIdDepartment(rs.getInt(ID_DEPARTMENT)); + dto.setNmDepartment(rs.getString(NM_DEPARTMENT)); + + rtnList.add(dto); + } + + } finally { + + DbUtil.closeStatement(stmt); + } + + return rtnList; + } + + //メールアドレス検索 + public List selectByMail(String mail) throws SQLException { + List rtnList = new ArrayList<>(); + StringBuilder sql = new StringBuilder(); + + sql.append(" SELECT "); + sql.append(" employee.id_employee "); + sql.append(" ,employee.nm_employee "); + sql.append(" ,employee.kn_employee "); + sql.append(" ,employee.mail_address "); + sql.append(" ,employee.password "); + sql.append(" ,employee.id_department "); + sql.append(" ,department.nm_department "); + sql.append(" FROM employee "); + sql.append(" INNER JOIN department "); + sql.append(" ON employee.id_department = department.id_department "); + sql.append(" WHERE employee.mail_address = ? "); + + try { + + stmt = con.prepareStatement(sql.toString()); + stmt.setString(1, mail); + rs = stmt.executeQuery(); + + while (rs.next()) { + + EmployeeDTO dto = new EmployeeDTO(); + + dto.setIdEmployee(rs.getInt(ID_EMPLOYEE)); + dto.setNmEmployee(rs.getString(NM_EMPLOYEE)); + dto.setKnEmployee(rs.getString(KN_EMPLOYEE)); + dto.setMailAddress(rs.getString(MAIL_ADDRESS)); + dto.setPassword(rs.getString(PASSWORD)); + dto.setIdDepartment(rs.getInt(ID_DEPARTMENT)); + dto.setNmDepartment(rs.getString(NM_DEPARTMENT)); + + rtnList.add(dto); + } + + } finally { + + DbUtil.closeStatement(stmt); + } + + return rtnList; + } + + //部署名検索 + + public List selectByDepartment(String department) throws SQLException { + List rtnList = new ArrayList<>(); + StringBuilder sql = new StringBuilder(); + + sql.append(" SELECT "); + sql.append(" employee.id_employee "); + sql.append(" ,employee.nm_employee "); + sql.append(" ,employee.kn_employee "); + sql.append(" ,employee.mail_address "); + sql.append(" ,employee.password "); + sql.append(" ,employee.id_department "); + sql.append(" ,department.nm_department "); + sql.append(" FROM employee "); + sql.append(" INNER JOIN department "); + sql.append(" ON employee.id_department = department.id_department "); + sql.append(" WHERE department.nm_department = ? "); + + try { + + stmt = con.prepareStatement(sql.toString()); + stmt.setString(1, department); + rs = stmt.executeQuery(); + + while (rs.next()) { + + EmployeeDTO dto = new EmployeeDTO(); + + dto.setIdEmployee(rs.getInt(ID_EMPLOYEE)); + dto.setNmEmployee(rs.getString(NM_EMPLOYEE)); + dto.setKnEmployee(rs.getString(KN_EMPLOYEE)); + dto.setMailAddress(rs.getString(MAIL_ADDRESS)); + dto.setPassword(rs.getString(PASSWORD)); + dto.setIdDepartment(rs.getInt(ID_DEPARTMENT)); + dto.setNmDepartment(rs.getString(NM_DEPARTMENT)); + + rtnList.add(dto); + } + + } finally { + + DbUtil.closeStatement(stmt); + } + + return rtnList; + } + //社員情報削除 public void empDelete(int id) throws SQLException { //SQL作成 diff --git a/src/com/rhizome/example/main/Main.java b/src/com/rhizome/example/main/Main.java index 155030f..b1dfed3 100644 --- a/src/com/rhizome/example/main/Main.java +++ b/src/com/rhizome/example/main/Main.java @@ -127,11 +127,52 @@ public class Main { break; case "2": + //検索項目選択 + System.out.println("1:ID 2:社員名 3:フリガナ 4:メールアドレス 5:部署名"); + String condition = sc.nextLine(); + switch (condition) { - String id = inputCheck("ID", true); - empList = empDao.selectById( - Integer.parseInt(id)); - break; + //ID検索 + case "1": + String id = inputCheck("ID", true); + empList = empDao.selectById(Integer.parseInt(id)); + + break; + + //社員名検索 + case "2": + String name = inputCheck("社員名", false); + empList = empDao.selectByName(name); + + break; + + //フリガナ検索 + case "3": + String kana = inputCheck("フリガナ", false); + empList = empDao.selectByKana(kana); + + break; + + //メールアドレス検索 + case "4": + String mail = inputCheck("メールアドレス", false); + empList = empDao.selectByMail(mail); + + break; + + //部署名検索 + case "5": + String department = inputCheck("部署名", false); + empList = empDao.selectByDepartment(department); + + break; + + default: + + return; + } + + break; default: return; @@ -333,6 +374,7 @@ public class Main { //DB接続 Connection con = DbUtil.getConnection(); EmployeeDAO empDao = new EmployeeDAO(con); + DepartmentDAO deptDao = new DepartmentDAO(con); try { @@ -346,13 +388,35 @@ public class Main { String password = inputCheck("パスワード", false); //部署ID入力 String departmentId = inputCheck("部署ID", true); + + //部署IDを数値変換 + int deptId = Integer.parseInt(departmentId); + + //入力された部署IDが存在するかチェック + if (!deptDao.existsDepartment(deptId)) { + + System.out.println("入力された部署IDは存在しません"); + + return; + } + + //登録確認 + System.out.println("社員情報を登録しますか? Y/y"); + System.out.println("(Y/y以外の入力であればキャンセル)"); + + String answer = sc.nextLine(); + + if (!"Y".equals(answer) && !"y".equals(answer)) { + return; + } + //登録処理 - empDao.empInsert( - name, - kana, - mail, - password, - Integer.parseInt(departmentId)); + empDao.empInsert( + name, + kana, + mail, + password, + deptId); System.out.println("登録が完了しました"); @@ -367,6 +431,8 @@ public class Main { //DB接続 Connection con = DbUtil.getConnection(); EmployeeDAO empDao = new EmployeeDAO(con); + //部署テーブル存在確認用DAO生成 + DepartmentDAO deptDao = new DepartmentDAO(con); try { //更新対象ID入力 @@ -396,14 +462,34 @@ public class Main { String password = inputUpdate("パスワード", emp.getPassword()); //部署ID入力 String departmentId = inputUpdate("部署ID", String.valueOf(emp.getIdDepartment())); + + //部署IDを数値変換 + int deptId = Integer.parseInt(departmentId); + //入力された部署IDが存在するかチェック + if (!deptDao.existsDepartment(deptId)) { + System.out.println("入力された部署IDは存在しません"); + + return; + } + + //更新確認 + System.out.println("社員情報を更新しますか? Y/y"); + System.out.println("(Y/y以外の入力であればキャンセル)"); + + String answer = sc.nextLine(); + + if (!"Y".equals(answer) && !"y".equals(answer)) { + return; + } + //更新処理 empDao.empUpdate( - id, - name, - kana, - mail, - password, - Integer.parseInt(departmentId)); + id, + name, + kana, + mail, + password, + deptId); System.out.println("更新が完了しました"); @@ -437,19 +523,38 @@ public class Main { deptList = deptDao.selectAll(); break; - //条件検索 + //条件検索 case "2": - //部署ID入力 - String id = inputCheck("ID", true); + //検索項目選択 + System.out.println("1:ID 2:部署名"); + String condition = sc.nextLine(); + switch (condition) { - //ID検索実行 - deptList = deptDao.selectById(Integer.parseInt(id)); - break; + //ID検索 + case "1": + String id = inputCheck("ID", true); + deptList = deptDao.selectById(Integer.parseInt(id)); - //メニューへ戻る + break; + + //部署名検索 + case "2": + String name = inputCheck("部署名", false); + deptList = deptDao.selectByName(name); + + break; + + default: + + return; + } + + break; + + //メニューへ戻る default: - return; + return; } //検索結果0件の場合 @@ -485,6 +590,18 @@ public class Main { try { //部署名入力 String departmentName = inputCheck("部署名", false); + + //登録確認 + System.out.println("部署情報を登録しますか? Y/y"); + System.out.println("(Y/y以外の入力であればキャンセル)"); + + String answer = sc.nextLine(); + + if (!"Y".equals(answer) && !"y".equals(answer)) { + + return; + } + //登録処理 deptDao.deptInsert(departmentName); @@ -520,6 +637,16 @@ public class Main { //部署名入力 String departmentName = inputCheck("部署名", false); + + //更新確認 + System.out.println("部署情報を更新しますか? Y/y"); + System.out.println("(Y/y以外の入力であればキャンセル)"); + + String answer = sc.nextLine(); + + if (!"Y".equals(answer) && !"y".equals(answer)) { + return; + } //更新処理 deptDao.deptUpdate(id, departmentName);