diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..50e9bd0
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/.project b/.project
new file mode 100644
index 0000000..ccaa13e
--- /dev/null
+++ b/.project
@@ -0,0 +1,23 @@
+
+
+ em-jdbc
+
+
+
+
+
+ org.eclipse.wst.validation.validationbuilder
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.wst.jsdt.core.jsNature
+
+
diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope
new file mode 100644
index 0000000..cca691f
--- /dev/null
+++ b/.settings/.jsdtscope
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container
new file mode 100644
index 0000000..49c8cd4
--- /dev/null
+++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container
@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.JRE_CONTAINER
\ No newline at end of file
diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.name b/.settings/org.eclipse.wst.jsdt.ui.superType.name
new file mode 100644
index 0000000..11006e2
--- /dev/null
+++ b/.settings/org.eclipse.wst.jsdt.ui.superType.name
@@ -0,0 +1 @@
+Global
\ No newline at end of file
diff --git a/mysql-connector-j-8.0.32.jar b/mysql-connector-j-8.0.32.jar
new file mode 100644
index 0000000..184327c
Binary files /dev/null and b/mysql-connector-j-8.0.32.jar differ
diff --git a/src/com/rhizome/example/dao/EmployeeDAO.java b/src/com/rhizome/example/dao/EmployeeDAO.java
index ef63c49..93b44b5 100644
--- a/src/com/rhizome/example/dao/EmployeeDAO.java
+++ b/src/com/rhizome/example/dao/EmployeeDAO.java
@@ -12,7 +12,9 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Scanner;
+import com.rhizome.example.dto.EmployeeDTO;
import com.rhizome.example.util.DbUtil;
public class EmployeeDAO {
@@ -48,19 +50,25 @@ public class EmployeeDAO {
* @throws SQLException
* @throws ClassNotFoundException
*/
- public List selectAll() throws SQLException, ClassNotFoundException {
- List rtnList = new ArrayList<>();
+ public List selectAll() throws SQLException, ClassNotFoundException {
+ List rtnList = new ArrayList<>();
StringBuilder sql = new StringBuilder();
sql.append(" SELECT ");
sql.append(" " + "*");
sql.append(" FROM ");
sql.append(" " + TBL_NAME);
try {
-
this.stmt = con.prepareStatement(sql.toString());
rs = stmt.executeQuery();
while (rs.next()) {
- rtnList.add(rs.getString(NM_EMPLOYEE));
+ EmployeeDTO employee = new EmployeeDTO();
+ employee.setIdEmployee(rs.getInt(ID_EMPLOYEE));
+ employee.setNmEmployee(rs.getString(NM_EMPLOYEE));
+ employee.setKnEmployee(rs.getString(KN_EMPLOYEE));
+ employee.setMailaddress(rs.getString(MAIL_ADDRESS));
+ employee.setPassword(rs.getString(PASSWORD));
+ employee.setIdDepartment(rs.getInt(ID_DEPARTMENT));
+ rtnList.add(employee);
}
} finally {
DbUtil.closeStatement(this.stmt);
@@ -68,4 +76,137 @@ public class EmployeeDAO {
return rtnList;
}
+ /**
+ * 社員テーブルから指定された社員IDに一致するデータを全件取得する
+ *
+ * @return 検索結果
+ * @throws SQLException
+ * @throws ClassNotFoundException
+ */
+ public List selectById(int idEmployee) throws SQLException, ClassNotFoundException {
+ List rtnList = new ArrayList<>();
+ StringBuilder sql = new StringBuilder();
+ sql.append(" SELECT ");
+ sql.append(" " + "*");
+ sql.append(" FROM ");
+ sql.append(" " + TBL_NAME);
+ sql.append(" WHERE ");
+ sql.append(" " + ID_EMPLOYEE + " = " + "?");
+ try {
+ this.stmt = con.prepareStatement(sql.toString());
+ stmt.setInt(1,idEmployee);
+ rs = stmt.executeQuery();
+ int nRecords = 0;
+ while (rs.next()) {
+ EmployeeDTO employee = new EmployeeDTO();
+ employee.setIdEmployee(rs.getInt(ID_EMPLOYEE));
+ employee.setNmEmployee(rs.getString(NM_EMPLOYEE));
+ employee.setKnEmployee(rs.getString(KN_EMPLOYEE));
+ employee.setMailaddress(rs.getString(MAIL_ADDRESS));
+ employee.setPassword(rs.getString(PASSWORD));
+ employee.setIdDepartment(rs.getInt(ID_DEPARTMENT));
+ rtnList.add(employee);
+ nRecords++;
+ }
+ if (nRecords==0) {
+ System.out.println("入力された値で情報がみつかりませんでした");
+ }
+ } finally {
+ DbUtil.closeStatement(this.stmt);
+ }
+ return rtnList;
+ }
+
+ /**
+ * 社員テーブルから指定された社員IDに一致するデータを削除する
+ *
+ * @throws SQLException
+ * @throws ClassNotFoundException
+ */
+ public void empDelete(int idEmployee) throws SQLException, ClassNotFoundException {
+ if (selectById(idEmployee).size()!=0) {
+ StringBuilder sql = new StringBuilder();
+ sql.append(" DELETE FROM ");
+ sql.append(" " + TBL_NAME);
+ sql.append(" WHERE ");
+ sql.append(" " + ID_EMPLOYEE + " = " + "?");
+ System.out.println("指定されたIDの情報を削除しますか? Y/y");
+ System.out.println("(Y/y以外の入力であればキャンセル)");
+ Scanner sc = new Scanner(System.in);
+ String flag = sc.nextLine();
+ if (flag.equals("Y")||flag.equals("y")) {
+ try {
+ this.stmt = con.prepareStatement(sql.toString());
+ stmt.setInt(1,idEmployee);
+ stmt.executeUpdate();
+ System.out.println("削除が完了しました");
+ } finally {
+ DbUtil.closeStatement(this.stmt);
+ }
+ }
+ }
+ }
+
+ /**
+ * 社員テーブルに指定された情報を新規登録する
+ *
+ * @throws SQLException
+ * @throws ClassNotFoundException
+ */
+ public void empInsert(String name, String kn, String mailaddress, String password, int idDepartment) throws SQLException, ClassNotFoundException {
+ StringBuilder sql = new StringBuilder();
+ sql.append(" INSERT INTO ");
+ sql.append(" " + TBL_NAME);
+ sql.append(" ("+NM_EMPLOYEE+", "+KN_EMPLOYEE+","+MAIL_ADDRESS+","+PASSWORD+","+ID_DEPARTMENT+") ");
+ sql.append(" VALUES ");
+ sql.append(" (?, ?, ?, ?, ?) ");
+ try {
+ this.stmt = con.prepareStatement(sql.toString());
+ stmt.setString(1,name);
+ stmt.setString(2,kn);
+ stmt.setString(3,mailaddress);
+ stmt.setString(4,password);
+ stmt.setInt(5,idDepartment);
+ stmt.executeUpdate();
+ System.out.println("登録が完了しました");
+ } finally {
+ DbUtil.closeStatement(this.stmt);
+ }
+ }
+
+ /**
+ * 社員テーブルの指定された社員IDに一致するデータを引数の内容に更新する
+ *
+ * @throws SQLException
+ * @throws ClassNotFoundException
+ */
+ public void empUpdate(int idEmployee, String name, String kn, String mailaddress, String password, int idDepartment) throws SQLException, ClassNotFoundException {
+ if (selectById(idEmployee).size()!=0) {
+ StringBuilder sql = new StringBuilder();
+ sql.append(" UPDATE ");
+ sql.append(" " + TBL_NAME);
+ sql.append(" SET ");
+ sql.append(" "+NM_EMPLOYEE+" = ?"+",");
+ sql.append(" "+KN_EMPLOYEE+" = ?"+",");
+ sql.append(" "+MAIL_ADDRESS+" = ?"+",");
+ sql.append(" "+PASSWORD+" = ?"+",");
+ sql.append(" "+ID_DEPARTMENT+" = ?");
+ sql.append(" WHERE ");
+ sql.append(" " + ID_EMPLOYEE + " = " + "?");
+ try {
+ this.stmt = con.prepareStatement(sql.toString());
+ stmt.setString(1,name);
+ stmt.setString(2,kn);
+ stmt.setString(3,mailaddress);
+ stmt.setString(4,password);
+ stmt.setInt(5,idDepartment);
+ stmt.setInt(6,idEmployee);
+ stmt.executeUpdate();
+ System.out.println("更新が完了しました");
+ } finally {
+ DbUtil.closeStatement(this.stmt);
+ }
+ }
+ }
+
}
diff --git a/src/com/rhizome/example/dto/EmployeeDTO.java b/src/com/rhizome/example/dto/EmployeeDTO.java
new file mode 100644
index 0000000..23cacb7
--- /dev/null
+++ b/src/com/rhizome/example/dto/EmployeeDTO.java
@@ -0,0 +1,59 @@
+package com.rhizome.example.dto;
+
+public class EmployeeDTO {
+
+ private int idEmployee;
+ private String nmEmployee;
+ private String knEmployee;
+ private String mailaddress;
+ private String password;
+ private int idDepartment;
+
+ public int getIdEmployee() {
+ return idEmployee;
+ }
+ public void setIdEmployee(int idEmployee) {
+ this.idEmployee = idEmployee;
+ }
+ public String getNmEmployee() {
+ return nmEmployee;
+ }
+ public void setNmEmployee(String nmEmployee) {
+ this.nmEmployee = nmEmployee;
+ }
+ public String getKnEmployee() {
+ return knEmployee;
+ }
+ public void setKnEmployee(String knEmployee) {
+ this.knEmployee = knEmployee;
+ }
+ public String getMailaddress() {
+ return mailaddress;
+ }
+ public void setMailaddress(String mailaddress) {
+ this.mailaddress = mailaddress;
+ }
+ public String getPassword() {
+ return password;
+ }
+ public void setPassword(String password) {
+ this.password = password;
+ }
+ public int getIdDepartment() {
+ return idDepartment;
+ }
+ public void setIdDepartment(int idDepartment) {
+ this.idDepartment = idDepartment;
+ }
+
+ @Override
+ public String toString() {
+ return this.getIdEmployee() + " "
+ +this.getNmEmployee() + " "
+ +this.getKnEmployee() + " "
+ +this.getMailaddress() + " "
+ +this.getPassword() + " "
+ +this.getIdDepartment();
+ }
+
+}
diff --git a/src/com/rhizome/example/main/Main.java b/src/com/rhizome/example/main/Main.java
index 14fb220..c6c5429 100644
--- a/src/com/rhizome/example/main/Main.java
+++ b/src/com/rhizome/example/main/Main.java
@@ -7,6 +7,7 @@ import java.util.List;
import java.util.Scanner;
import com.rhizome.example.dao.EmployeeDAO;
+import com.rhizome.example.dto.EmployeeDTO;
import com.rhizome.example.util.DbUtil;
/**
@@ -48,15 +49,33 @@ public class Main {
System.out.println("現在のメンテナンス対象テーブル:" + targetTableName(tblFlg));
System.out.println("1:検索 2:登録 3:更新 4:削除 9:テーブル切替 0:終了");
String ope = sc.nextLine();
+ Connection con = DbUtil.getConnection();
+ EmployeeDAO empDao = new EmployeeDAO(con);
switch (ope) {
case "1":
empSelect();
break;
case "2":
+ empDao.empInsert(inputCheck("社員名", false),
+ inputCheck("フリガナ", false),
+ inputCheck("メールアドレス", false),
+ inputCheck("パスワード", false),
+ Integer.parseInt(inputCheck("部署ID", true)));
break;
case "3":
- break;
+ int id = Integer.parseInt(inputCheck("ID", true));
+ if (empDao.selectById(id).size()==0) break; // 社員IDの照合に失敗した場合は処理を抜ける
+ else {
+ empDao.empUpdate(id,
+ inputCheck("社員名", false),
+ inputCheck("フリガナ", false),
+ inputCheck("メールアドレス", false),
+ inputCheck("パスワード", false),
+ Integer.parseInt(inputCheck("部署ID", true)));
+ break;
+ }
case "4":
+ empDao.empDelete(Integer.parseInt(inputCheck("ID", true)));
break;
case "9":
return;
@@ -76,7 +95,7 @@ public class Main {
* @throws SQLException
*/
public static void empSelect() throws ClassNotFoundException, SQLException {
- List empList = new ArrayList<>();
+ List empList = new ArrayList<>();
Connection con = DbUtil.getConnection();
EmployeeDAO empDao = new EmployeeDAO(con);
System.out.println("1:全検索 2:条件検索 それ以外:戻る");
@@ -86,10 +105,13 @@ public class Main {
case "1":
empList = empDao.selectAll();
break;
+ case "2":
+ empList = empDao.selectById(Integer.parseInt(inputCheck("ID", true)));
+ break;
default:
return;
}
- for (String emp : empList) {
+ for (EmployeeDTO emp : empList) {
System.out.println(emp);
}
} finally {
diff --git a/src/com/rhizome/example/util/DbUtil.java b/src/com/rhizome/example/util/DbUtil.java
index d2bb82e..f67dbe4 100644
--- a/src/com/rhizome/example/util/DbUtil.java
+++ b/src/com/rhizome/example/util/DbUtil.java
@@ -1,6 +1,9 @@
package com.rhizome.example.util;
import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
public class DbUtil {
// 定数定義(共通)
@@ -41,7 +44,12 @@ public class DbUtil {
* 生成されたConnectionを返却する
* ※Connection生成には上記の定数を活用してください
*/
-
+ public static Connection getConnection() throws ClassNotFoundException, SQLException {
+ Class.forName(DB_DRIVER);
+ // Connection : not null && 接続状態 → フィールドを戻す
+ if( !((con!=null)&&(con.isValid(1))) ) con = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
+ return con;
+ }
/*
* TODO 以下の仕様でメソッドを作成してください。
@@ -52,6 +60,9 @@ public class DbUtil {
* 例外 :SQLException
* 処理 :引数のDBステートメントがnullでない場合、そのDBステートメントをクローズする
*/
+ public static void closeStatement(PreparedStatement stmt) throws SQLException {
+ if (stmt!=null) stmt.close();
+ }
/*
@@ -63,6 +74,9 @@ public class DbUtil {
* 例外 :SQLException
* 処理 :引数のコネクションがnullでない場合、そのコネクションを切断する
*/
+ public static void closeConnection(Connection con) throws SQLException {
+ if (con!=null) con.close();
+ }
}