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,89 +106,137 @@ 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作成
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append(" DELETE "); sql.append(" DELETE ");
sql.append(" FROM "); sql.append(" FROM ");
sql.append(" " + TBL_NAME); sql.append(" " + TBL_NAME);
sql.append(" WHERE "); sql.append(" WHERE ");
sql.append(" " + ID_DEPARTMENT + " = ?"); sql.append(" " + ID_DEPARTMENT + " = ?");
try { try {
//PreparedStatement生成 //PreparedStatement生成
stmt = con.prepareStatement(sql.toString()); stmt = con.prepareStatement(sql.toString());
//値設定 //値設定
stmt.setInt(1, id); stmt.setInt(1, id);
//SQL実行 //SQL実行
stmt.executeUpdate(); stmt.executeUpdate();
} finally { } finally {
DbUtil.closeStatement(stmt); DbUtil.closeStatement(stmt);
} }
} }
//部署情報登録 //部署情報登録
public void deptInsert( public void deptInsert(
String departmentName) String departmentName)
throws SQLException { throws SQLException {
//SQL作成 //SQL作成
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append(" INSERT INTO department "); sql.append(" INSERT INTO department ");
sql.append(" ( "); sql.append(" ( ");
sql.append(" nm_department "); sql.append(" nm_department ");
sql.append(" ) "); sql.append(" ) ");
sql.append(" VALUES "); sql.append(" VALUES ");
sql.append(" (?) "); sql.append(" (?) ");
try { try {
//PreparedStatement生成 //PreparedStatement生成
stmt = con.prepareStatement(sql.toString()); stmt = con.prepareStatement(sql.toString());
//値設定 //値設定
stmt.setString(1, departmentName); stmt.setString(1, departmentName);
//SQL実行 //SQL実行
stmt.executeUpdate(); stmt.executeUpdate();
} finally { } finally {
DbUtil.closeStatement(stmt); DbUtil.closeStatement(stmt);
} }
} }
//部署情報更新 //部署情報更新
public void deptUpdate( public void deptUpdate(
int id, int id,
String departmentName) String departmentName)
throws SQLException { throws SQLException {
//SQL作成 //SQL作成
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append(" UPDATE department "); sql.append(" UPDATE department ");
sql.append(" SET "); sql.append(" SET ");
sql.append(" nm_department = ? "); sql.append(" nm_department = ? ");
sql.append(" WHERE id_department = ? "); sql.append(" WHERE id_department = ? ");
try { try {
//PreparedStatement生成 //PreparedStatement生成
stmt = con.prepareStatement(sql.toString()); stmt = con.prepareStatement(sql.toString());
//値設定 //値設定
stmt.setString(1, departmentName); stmt.setString(1, departmentName);
stmt.setInt(2, id); stmt.setInt(2, id);
//SQL実行 //SQL実行
stmt.executeUpdate(); stmt.executeUpdate();
} finally { } finally {
//Statement切断 //Statement切断
DbUtil.closeStatement(stmt); DbUtil.closeStatement(stmt);
} }
}
//部署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,11 +127,52 @@ public class Main {
break; break;
case "2": case "2":
//検索項目選択
System.out.println("1:ID 2:社員名 3:フリガナ 4:メールアドレス 5:部署名");
String condition = sc.nextLine();
switch (condition) {
String id = inputCheck("ID", true); //ID検索
empList = empDao.selectById( case "1":
Integer.parseInt(id)); String id = inputCheck("ID", true);
break; 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: default:
return; return;
@@ -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,14 +462,34 @@ 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,
name, name,
kana, kana,
mail, mail,
password, password,
Integer.parseInt(departmentId)); deptId);
System.out.println("更新が完了しました"); System.out.println("更新が完了しました");
@@ -437,19 +523,38 @@ public class Main {
deptList = deptDao.selectAll(); deptList = deptDao.selectAll();
break; break;
//条件検索 //条件検索
case "2": case "2":
//部署ID入力 //検索項目選択
String id = inputCheck("ID", true); System.out.println("1:ID 2:部署名");
String condition = sc.nextLine();
switch (condition) {
//ID検索実行 //ID検索
deptList = deptDao.selectById(Integer.parseInt(id)); case "1":
break; 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: default:
return; return;
} }
//検索結果0件の場合 //検索結果0件の場合
@@ -485,6 +590,18 @@ public class Main {
try { try {
//部署名入力 //部署名入力
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);
@@ -520,6 +637,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);