10/30 9-1まで完了

This commit is contained in:
2026-10-30 17:02:38 +09:00
parent 9b993a436c
commit 33070d1dc6
3 changed files with 464 additions and 84 deletions

View File

@@ -106,6 +106,45 @@ public class DepartmentDAO {
return rtnList; return rtnList;
} }
//部署名検索
public List<DepartmentDTO> selectByName(String name) throws SQLException {
//戻り値用リスト
List<DepartmentDTO> 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 { public void deptDelete(int id) throws SQLException {
//SQL作成 //SQL作成
@@ -191,5 +230,14 @@ public class DepartmentDAO {
} }
} }
//部署ID存在確認
public boolean existsDepartment(int idDepartment)
throws SQLException {
List<DepartmentDTO> deptList = selectById(idDepartment);
return deptList.size() > 0;
}
} }

View File

@@ -138,6 +138,211 @@ public class EmployeeDAO {
return rtnList; return rtnList;
} }
// 社員名検索
public List<EmployeeDTO> selectByName(String name) throws SQLException {
//戻り値用リスト
List<EmployeeDTO> 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<EmployeeDTO> selectByKana(String kana) throws SQLException {
//戻り値用リスト
List<EmployeeDTO> 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<EmployeeDTO> selectByMail(String mail) throws SQLException {
List<EmployeeDTO> 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<EmployeeDTO> selectByDepartment(String department) throws SQLException {
List<EmployeeDTO> 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 { public void empDelete(int id) throws SQLException {
//SQL作成 //SQL作成

View File

@@ -127,10 +127,51 @@ public class Main {
break; break;
case "2": case "2":
//検索項目選択
System.out.println("1:ID 2:社員名 3:フリガナ 4:メールアドレス 5:部署名");
String condition = sc.nextLine();
switch (condition) {
//ID検索
case "1":
String id = inputCheck("ID", true); String id = inputCheck("ID", true);
empList = empDao.selectById( empList = empDao.selectById(Integer.parseInt(id));
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; break;
default: default:
@@ -333,6 +374,7 @@ public class Main {
//DB接続 //DB接続
Connection con = DbUtil.getConnection(); Connection con = DbUtil.getConnection();
EmployeeDAO empDao = new EmployeeDAO(con); EmployeeDAO empDao = new EmployeeDAO(con);
DepartmentDAO deptDao = new DepartmentDAO(con);
try { try {
@@ -346,13 +388,35 @@ public class Main {
String password = inputCheck("パスワード", false); String password = inputCheck("パスワード", false);
//部署ID入力 //部署ID入力
String departmentId = inputCheck("部署ID", true); 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( empDao.empInsert(
name, name,
kana, kana,
mail, mail,
password, password,
Integer.parseInt(departmentId)); deptId);
System.out.println("登録が完了しました"); System.out.println("登録が完了しました");
@@ -367,6 +431,8 @@ public class Main {
//DB接続 //DB接続
Connection con = DbUtil.getConnection(); Connection con = DbUtil.getConnection();
EmployeeDAO empDao = new EmployeeDAO(con); EmployeeDAO empDao = new EmployeeDAO(con);
//部署テーブル存在確認用DAO生成
DepartmentDAO deptDao = new DepartmentDAO(con);
try { try {
//更新対象ID入力 //更新対象ID入力
@@ -396,6 +462,26 @@ public class Main {
String password = inputUpdate("パスワード", emp.getPassword()); String password = inputUpdate("パスワード", emp.getPassword());
//部署ID入力 //部署ID入力
String departmentId = inputUpdate("部署ID", String.valueOf(emp.getIdDepartment())); 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( empDao.empUpdate(
id, id,
@@ -403,7 +489,7 @@ public class Main {
kana, kana,
mail, mail,
password, password,
Integer.parseInt(departmentId)); deptId);
System.out.println("更新が完了しました"); System.out.println("更新が完了しました");
@@ -439,11 +525,30 @@ public class Main {
//条件検索 //条件検索
case "2": case "2":
//部署ID入力 //検索項目選択
String id = inputCheck("ID", true); System.out.println("1:ID 2:部署名");
String condition = sc.nextLine();
switch (condition) {
//ID検索実行 //ID検索
case "1":
String id = inputCheck("ID", true);
deptList = deptDao.selectById(Integer.parseInt(id)); deptList = deptDao.selectById(Integer.parseInt(id));
break;
//部署名検索
case "2":
String name = inputCheck("部署名", false);
deptList = deptDao.selectByName(name);
break;
default:
return;
}
break; break;
//メニューへ戻る //メニューへ戻る
@@ -486,6 +591,18 @@ public class Main {
//部署名入力 //部署名入力
String departmentName = inputCheck("部署名", false); 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); deptDao.deptInsert(departmentName);
System.out.println("登録が完了しました"); System.out.println("登録が完了しました");
@@ -521,6 +638,16 @@ public class Main {
//部署名入力 //部署名入力
String departmentName = inputCheck("部署名", false); 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); deptDao.deptUpdate(id, departmentName);