Create the Data Access Object: The Data access object uses spring's JdbcTemplate class to query the database. The JdbcTemplate class helps separate the static parts of JDBC DAO code by performing
the common boilerplate tasks:- Retrieves connections from the datasource.
- Prepares statement object.
- Executes SQL CRUD operations.
- Iterates over result sets and populates the results in standard collection objects.
- Handles SQLException and translates it into a more explicit exception in the spring exception hierarchy.
public class DAO extends JdbcDaoSupport {
public long empId;
public String empName;
public String empJob;
public long empSal;
public String SQL = "SELECT EMPNO, ENAME, JOB, SAL " + "FROM EMP WHERE SAL >= ?";
public List getData(long minSal) {
Long params[] = { minSal };
JdbcTemplate daoTmplt = getJdbcTemplate();
return daoTmplt.query(SQL, params, new EmpMapper());
}
}
DAO.java
Note that the DAO class has to extend JdbcDaoSupport, which defines the getJdbcTemplate() method.
Create the Business Interface: The business interface class acts as a simple facade to the DAO layer.public class BusinessInterface {
DAO empDAO;
public List getData(long minSal){
List empList = empDAO.getData(minSal);
return empList;
}
public void setDao(DAO empDAO){
this.empDAO = empDAO;
}
}
BusinessInterface.java
Add the Action class, Business Interface and DAO to Spring<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@localhost:1521:orcl</value>
</property>
<property name="username">
<value>scott</value>
</property>
<property name="password">
<value>tiger</value>
</property>
</bean>
<!-- Configure DAO -->
<bean id="empDao" class="data.DAO">
<property name="dataSource">
<ref bean="dataSource"></ref>
</property>
</bean>
<!-- Configure Business Service -->
<bean id="businessInterface" class="business.BusinessInterface">
<property name="dao">
<ref bean="empDao"></ref>
</property>
</bean>
<bean name="/search" class="actions.SearchAction">
<property name="businessInterface">
<ref bean="businessInterface" />
</property>
</bean>
</beans>
WEB-INF/applicationContext.xml
Note that SearchAction is defined here, instead of in the struts-config.xml. The bean name "/search" is used to as a link between this file and struts-config.xml.
Create the Sorter class: This is used in the JSP for sorting the result list.public class Sorter {
public static List sort(List list, String sortBy) {
Comparator comp = getComparator(sortBy);
Collections.sort(list, comp);
return list;
}
private static Comparator getComparator(String sortBy) {
System.out.println("Sort by : " + sortBy);
if (sortBy == null) {
return new NameComparator();
}
if (sortBy.equals("empName"))
return new NameComparator();
if (sortBy.equals("empId"))
return new IdComparator();
if (sortBy.equals("empSal"))
return new SalComparator();
if (sortBy.equals("empJob"))
return new JobComparator();
return null;
}
private static class NameComparator implements Comparator {
public int compare(Object emp1, Object emp2) {
Employee employee1 = (Employee) emp1;
Employee employee2 = (Employee) emp2;
return employee1.getEmpName().compareTo(employee2.getEmpName());
}
}
private static class IdComparator implements Comparator {
public int compare(Object emp1, Object emp2) {
Employee employee1 = (Employee) emp1;
Employee employee2 = (Employee) emp2;
return new Long(employee1.getEmpId()).compareTo(new Long(employee2.getEmpId()));
}
}
private static class SalComparator implements Comparator {
public int compare(Object emp1, Object emp2) {
Employee employee1 = (Employee) emp1;
Employee employee2 = (Employee) emp2;
return new Long(employee1.getEmpSal()).compareTo(new Long(employee2.getEmpSal()));
}
}
private static class JobComparator implements Comparator {
public int compare(Object emp1, Object emp2) {
Employee employee1 = (Employee) emp1;
Employee employee2 = (Employee) emp2;
return employee1.getEmpJob().compareTo(employee2.getEmpJob());
}
}
}
Sorter.java
Create the Value object: The Employee.java bean used in the row mapper is shown below.public class Employee {
public long empId;
public String empName;
public String empJob;
public long empSal;
public long getEmpId() {
return empId;
}
public void setEmpId(long empId) {
this.empId = empId;
}
public String getEmpJob() {
return empJob;
}
public void setEmpJob(String empJob) {
this.empJob = empJob;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public long getEmpSal() {
return empSal;
}
public void setEmpSal(long empSal) {
this.empSal = empSal;
}
}
Employee.java
{ 0 comments... Views All / Send Comment! }
Post a Comment