6 従業員IDによる検索
従業員IDで検索は、指定した従業員IDに基づいて特定の従業員を検索します。
従業員IDは、EMPLOYEES表の主キーです。HR Webアプリケーションに有効な従業員IDを入力し、送信してデータベースから対応する従業員詳細をフェッチします。 
JavaBean.javaで新しいメソッドgetEmployee(int)を宣言します。- 新しいメソッド
getEmployee(int)をJavaBeanImpl.javaで実装します。 - 新しいコードを
WebController.javaに追加して、リクエストとレスポンスを処理します。 - HTMLページ
listById.htmlを作成して、結果を表示します。
Jdbc Java Bean
JBedbcan.javaおよびJdbcBeanImpl.javaでそれぞれ新しいメソッドgetEmployee(int)を宣言および実装します。このメソッドは、従業員IDを入力パラメータとして使用してEmployee型のオブジェクトを返します。
クラス名: src/main/java/com/oracle/jdbc/samples/bean/JdbcBean.java
Githubの場所: JdbcBean.java
新しいメソッドを宣言するステップ:
- IntelliJで
JdbcBean.javaファイルを開きます。JdbcBean.javaクラスを作成するには、JDBC接続のためのJava Beanインタフェースの作成を参照してください。同じクラスを使用し、各機能に対して新しいメソッドを宣言します。 - 次のコード・スニペットを追加して、従業員IDを入力として取る
getEmployee(int)メソッドを宣言します。public List<Employee> getEmployee(int empId);
クラス名: src/main/java/com/oracle/jdbc/samples/bean/JdbcBeanImpl.java
Githubの場所: JdbcBeanImpl.java
新しいメソッドを実装するステップ:
- IntelliJで
JdbcBeanImpl.javaファイルを開きます。JdbcBeanImpl.javaクラスを作成するには、JDBC接続のためのJava Bean実装の作成を参照してください。同じクラスを使用し、各機能に対して新しい実装メソッドを追加します。 - 次のコード・スニペットを追加して、
getEmployee(int)メソッドを実装します。public List<Employee> getEmployee(int empId) { List<Employee> returnValue = new ArrayList<>(); /*Get the database connection*/ try (Connection connection = getConnection()) { /* Insert the SQL statement to fetch an employee using the employee Id */ try (PreparedStatement preparedStatement = connection.prepareStatement( "SELECT Employee_Id, First_Name, Last_Name, Email, Phone_Number, Job_Id, Salary FROM EMPLOYEES WHERE Employee_Id = ?")) { preparedStatement.setInt(1, empId); /* Set the input parameter */ try (ResultSet resultSet = preparedStatement.executeQuery()) { if(resultSet.next()) { /* Check if the resultSet has any value */ returnValue.add(new Employee(resultSet)); } } } } catch (SQLException ex) { /* Catch the SQLException and log the message in logger*/ logger.log(Level.SEVERE, null, ex); ex.printStackTrace(); } return returnValue; /* Return the List of Employees */ }
リクエストを処理するコードのサーブレットへの追加
従業員IDで検索するための関連コードをWebController.javaに追加します。
クラス名: src/main/java/com/oracle/jdbc/samples/web/WebController.java
Githubの場所: WebController.java
コードを追加するステップ:
WebController.javaクラスを開きます。WebController.javaを作成するには、リクエストを処理するサーブレットの作成を参照してください。同じクラスを使用して、必要なコードを追加します。- 従業員IDを取得する変数
ID_KEYを宣言します。これはグローバル変数であるため、processRequest()メソッドの外部で、ただしWebControllerクラスの内部で宣言します。private static final String ID_KEY = "id"; - メソッド
processRequest()は、ListAll機能ですでに作成されています。次に、従業員IDによる検索機能を実装するコードを追加します。 ユーザーからの入力を取得する文字列型の変数値を宣言します。String value = null; - 新しい機能を処理するIF条件を追加します。ユーザーが入力した従業員IDを取得し、メソッド
getEmployee(int)を起動して従業員レコードが存在するかどうかを確認します。if ((value = request.getParameter(ID_KEY)) != null) { int empId = Integer.valueOf(value).intValue(); employeeList = employeeBean.getEmployee(empId); } else { // Previously used getEmployees() method for Listall feature employeeList = employeeBean.getEmployees(); }
従業員IDによる検索のための新規HTMLの作成
ユーザーが従業員IDを入力するための入力プレースホルダを示すHTMLページ。従業員レコードが見つかった場合は、従業員の詳細がページに表示され、それ以外の場合はエラー・メッセージが表示されます。
クラス名:src/main/webapp/listById.html
Githubの場所: listById.html
HTMLページを作成するステップ:
- HTMLページのtitle、stylesheetおよびbodyを作成します。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>List Employee by Id</title> <!-- Specify the stylesheet here --> <link rel="stylesheet" type="text/css" href="css/app.css" > <!-- Bootstrap JS for the UI --> <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> </head> - 従業員IDを取得するための
<body>タグと<input>タグを開始します。<body> <div><label>Employee Id: </label> <input id="empId" type="textfield" onkeypress="return waitForEnter(event)"\> </div> <br/> <br/> <script> function waitForEnter(e) { if (e.keyCode == 13) { var tb = document.getElementById("empId"); fetchElementById(tb.value) return false; } } <script> var xmlhttp = new XMLHttpRequest(); var url = "WebController"; - リクエストの送信時、つまりいずれかの機能のリンクが選択されたときのアクションを定義します。
xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { processResponse(xmlhttp.responseText); } } xmlhttp.open("GET", url, true); xmlhttp.send(); - HTMLページにJSON結果を表示する
processResponse()関数を作成します。function processResponse(response) { //Process the JSON respnse into an array. var arr = JSON.parse(response); var i; var out = "<table>"; keys = Object.keys(arr[0]); // Print Headers out += "<tr>" for(i = 0; i < keys.length; ++i) { out += "<th>"+keys[i]+"</th>" } out += "</tr>"; // Print values for(j = 0; j < arr.length; j++) { out += "<tr>" for(i = 0; i < keys.length; ++i) { out += "<td>"+arr[j][keys[i]]+"</td>" } out += "</tr>" } out += "</table>"; document.getElementById("id-emp").innerHTML = out; }