JAVA

DAO JDBC #2

다만사 2023. 1. 18. 22:39

DBのクローズするのは忘れて、追加して、T load メソッドを追加した。

修正したクラスは前回に修正して送った。

protected T load(String sql, Object... params) {
    try {
        conn = getConn();
        pstmt = conn.prepareStatement(sql);
        setParams(pstmt, params);
        rs = pstmt.executeQuery();

        ResultSetMetaData rsmd = rs.getMetaData();
        int columnCount = rsmd.getColumnCount();

        if (rs.next()) {
            T entity = (T)entityClass.newInstance();

            for (int i=0; i<columnCount; i++) {
                String columnName = rsmd.getColumnName(i+1);
                Object columnValue = rs.getObject(i+1);
                setValue(entity, columnName, columnValue);
            }

            return entity;
        }
    } catch (SQLException | InstantiationException | IllegalAccessException e) {
        throw new RuntimeException(e);
    } finally {
        close(rs, pstmt, conn);
    }

    return null;
}

 

テストは DTOを作って、今度はサブレットでした。

つぎはDTOだ。

サブレットもある。

package com.sora.webapptest;

import com.sora.webapptest.dao.EmployeeDAO;
import com.sora.webapptest.dto.Employee;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

@WebServlet(name = "EmpServlet", value = "/EmpServlet")
public class EmpServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        EmployeeDAO dao = new EmployeeDAO();
        response.setContentType("text/html; charset=utf-8");
        PrintWriter out = response.getWriter();
        String empId = request.getParameter("id");
//        List<Employee> employeeList = dao.getEmpList();
        Employee employee = dao.getEmpById(Integer.parseInt(empId));
        out.println("<html><head><title>emp list</title></head><body>");
        out.println("<table border=\"1\">");
//        for (Employee employee : employeeList) {
        out.print("<tr>");
        out.print("<td>" + employee.getEmployee_id()
                        + "</td><td>" + employee.getFirst_name()
                        + "</td><td>" + employee.getLast_name()
                        + "</td><td>" + employee.getEmail()
                        + "</td><td>" + employee.getPhone_number()
                        + "</td><td>" + employee.getHire_date()
                        + "</td><td>" + employee.getJob_id()
                        + "</td><td>" + employee.getSalary()
                        + "</td><td>" + employee.getCommission_pct()
                        + "</td><td>" + employee.getManager_id()
                        + "</td><td>" + employee.getDepartment_id() + "</td>" );
        out.println("</tr>");
//        }
        out.println("</table>");
        out.println("</body></html>");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}
package com.sora.webapptest.dto;

import java.math.BigDecimal;
import java.util.Date;

public class Employee {
    private BigDecimal employee_id;
    private String first_name;
    private String last_name;

    private String email;

    private String phone_number;

    private Date hire_date;

    private String job_id;

    private BigDecimal salary;

    private BigDecimal commission_pct;

    private BigDecimal manager_id;

    private BigDecimal department_id;

    public BigDecimal getEmployee_id() {
        return employee_id;
    }

    public void setEmployee_id(BigDecimal employee_id) {
        this.employee_id = employee_id;
    }

    public String getFirst_name() {
        return first_name;
    }

    public void setFirst_name(String first_name) {
        this.first_name = first_name;
    }

    public String getLast_name() {
        return last_name;
    }

    public void setLast_name(String last_name) {
        this.last_name = last_name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhone_number() {
        return phone_number;
    }

    public void setPhone_number(String phone_number) {
        this.phone_number = phone_number;
    }

    public Date getHire_date() {
        return hire_date;
    }

    public void setHire_date(Date hire_date) {
        this.hire_date = hire_date;
    }

    public String getJob_id() {
        return job_id;
    }

    public void setJob_id(String job_id) {
        this.job_id = job_id;
    }

    public BigDecimal getSalary() {
        return salary;
    }

    public void setSalary(BigDecimal salary) {
        this.salary = salary;
    }

    public BigDecimal getCommission_pct() {
        return commission_pct;
    }

    public void setCommission_pct(BigDecimal commission_pct) {
        this.commission_pct = commission_pct;
    }

    public BigDecimal getManager_id() {
        return manager_id;
    }

    public void setManager_id(BigDecimal manager_id) {
        this.manager_id = manager_id;
    }

    public BigDecimal getDepartment_id() {
        return department_id;
    }

    public void setDepartment_id(BigDecimal department_id) {
        this.department_id = department_id;
    }
}