CREATE TABLE Employee( EMPID INT NOT NULL AUTO_INCREMENT, EMPNAME VARCHAR(20) NOT NULL, EMPAGE INT NOT NULL, SALARY BIGINT NOT NULL, ADDRESS VARCHAR(20) NOT NULL PRIMARY KEY (ID) );
database.driver=com.mysql.jdbc.Driver database.url=jdbc:mysql://localhost:3306/DAVDB database.user=root database.password=root hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.show_sql=true hibernate.hbm2ddl.auto=update
package com.dineshonjava.bean; /** * @author Dinesh Rajput * */ public class EmployeeBean { private Integer id; private String name; private Integer age; private Long salary; private String address; public Long getSalary() { return salary; } public void setSalary(Long salary) { this.salary = salary; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }Employee.java
package com.dineshonjava.model; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; /** * @author Dinesh Rajput * */ @Entity @Table(name="Employee") public class Employee implements Serializable{ private static final long serialVersionUID = -723583058586873479L; @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name = "empid") private Integer empId; @Column(name="empname") private String empName; @Column(name="empaddress") private String empAddress; @Column(name="salary") private Long salary; @Column(name="empAge") private Integer empAge; public Integer getEmpId() { return empId; } public void setEmpId(Integer empId) { this.empId = empId; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; } public String getEmpAddress() { return empAddress; } public void setEmpAddress(String empAddress) { this.empAddress = empAddress; } public Long getSalary() { return salary; } public void setSalary(Long salary) { this.salary = salary; } public Integer getEmpAge() { return empAge; } public void setEmpAge(Integer empAge) { this.empAge = empAge; } }EmployeeDao.java
package com.dineshonjava.dao; import java.util.List; import com.dineshonjava.model.Employee; /** * @author Dinesh Rajput * */ public interface EmployeeDao { public void addEmployee(Employee employee); public List<Employee> listEmployeess(); public Employee getEmployee(int empid); public void deleteEmployee(Employee employee); }EmployeeDaoImpl.java
package com.dineshonjava.dao;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.dineshonjava.model.Employee;
/**
* @author Dinesh Rajput
*
*/
@Repository("employeeDao")
public class EmployeeDaoImpl implements EmployeeDao {
@Autowired
private SessionFactory sessionFactory;
public void addEmployee(Employee employee) {
sessionFactory.getCurrentSession().saveOrUpdate(employee);
}
@SuppressWarnings("unchecked")
public List<Employee> listEmployeess() {
return (List<Employee>) sessionFactory.getCurrentSession().createCriteria(Employee.class).list();
}
public Employee getEmployee(int empid) {
return (Employee) sessionFactory.getCurrentSession().get(Employee.class, empid);
}
public void deleteEmployee(Employee employee) {
sessionFactory.getCurrentSession().createQuery("DELETE FROM Employee WHERE empid = "+employee.getEmpId()).executeUpdate();
}
}
EmployeeService.javapackage com.dineshonjava.service; import java.util.List; import com.dineshonjava.model.Employee; /** * @author Dinesh Rajput * */ public interface EmployeeService { public void addEmployee(Employee employee); public List<Employee> listEmployeess(); public Employee getEmployee(int empid); public void deleteEmployee(Employee employee); }EmployeeServiceImpl.java
package com.dineshonjava.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.dineshonjava.dao.EmployeeDao; import com.dineshonjava.model.Employee; /** * @author Dinesh Rajput * */ @Service("employeeService") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public class EmployeeServiceImpl implements EmployeeService { @Autowired private EmployeeDao employeeDao; @Transactional(propagation = Propagation.REQUIRED, readOnly = false) public void addEmployee(Employee employee) { employeeDao.addEmployee(employee); } public List<Employee> listEmployeess() { return employeeDao.listEmployeess(); } public Employee getEmployee(int empid) { return employeeDao.getEmployee(empid); } public void deleteEmployee(Employee employee) { employeeDao.deleteEmployee(employee); } }EmployeeController.java
package com.dineshonjava.controller; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; import com.dineshonjava.bean.EmployeeBean; import com.dineshonjava.model.Employee; import com.dineshonjava.service.EmployeeService; /** * @author Dinesh Rajput * */ @Controller public class EmployeeController { @Autowired private EmployeeService employeeService; @RequestMapping(value = "/save", method = RequestMethod.POST) public ModelAndView saveEmployee(@ModelAttribute("command")EmployeeBean employeeBean, BindingResult result) { Employee employee = prepareModel(employeeBean); employeeService.addEmployee(employee); return new ModelAndView("redirect:/add.html"); } @RequestMapping(value="/employees", method = RequestMethod.GET) public ModelAndView listEmployees() { Map<String Object> model = new HashMap<String Object>(); model.put("employees", prepareListofBean(employeeService.listEmployeess())); return new ModelAndView("employeesList", model); } @RequestMapping(value = "/add", method = RequestMethod.GET) public ModelAndView addEmployee(@ModelAttribute("command")EmployeeBean employeeBean, BindingResult result) { Map<String, Object> model = new HashMap<String, Object>(); model.put("employees", prepareListofBean(employeeService.listEmployeess())); return new ModelAndView("addEmployee", model); } @RequestMapping(value = "/index", method = RequestMethod.GET) public ModelAndView welcome() { return new ModelAndView("index"); } @RequestMapping(value = "/delete", method = RequestMethod.GET) public ModelAndView editEmployee(@ModelAttribute("command")EmployeeBean employeeBean, BindingResult result) { employeeService.deleteEmployee(prepareModel(employeeBean)); Map<String, Object> model = new HashMap<String, Object>(); model.put("employee", null); model.put("employees", prepareListofBean(employeeService.listEmployeess())); return new ModelAndView("addEmployee", model); } @RequestMapping(value = "/edit", method = RequestMethod.GET) public ModelAndView deleteEmployee(@ModelAttribute("command")EmployeeBean employeeBean, BindingResult result) { Map<String, Object> model = new HashMap<String, Object>(); model.put("employee", prepareEmployeeBean(employeeService.getEmployee(employeeBean.getId()))); model.put("employees", prepareListofBean(employeeService.listEmployeess())); return new ModelAndView("addEmployee", model); } private Employee prepareModel(EmployeeBean employeeBean){ Employee employee = new Employee(); employee.setEmpAddress(employeeBean.getAddress()); employee.setEmpAge(employeeBean.getAge()); employee.setEmpName(employeeBean.getName()); employee.setSalary(employeeBean.getSalary()); employee.setEmpId(employeeBean.getId()); employeeBean.setId(null); return employee; } private List<EmployeeBean> prepareListofBean(List<Employee> employees){ List<employeebean> beans = null; if(employees != null && !employees.isEmpty()){ beans = new ArrayList<EmployeeBean>(); EmployeeBean bean = null; for(Employee employee : employees){ bean = new EmployeeBean(); bean.setName(employee.getEmpName()); bean.setId(employee.getEmpId()); bean.setAddress(employee.getEmpAddress()); bean.setSalary(employee.getSalary()); bean.setAge(employee.getEmpAge()); beans.add(bean); } } return beans; } private EmployeeBean prepareEmployeeBean(Employee employee){ EmployeeBean bean = new EmployeeBean(); bean.setAddress(employee.getEmpAddress()); bean.setAge(employee.getEmpAge()); bean.setName(employee.getEmpName()); bean.setSalary(employee.getSalary()); bean.setId(employee.getEmpId()); return bean; } }Spring Web configuration file web.xml
<web-app version="2.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>sdnext</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name><param-value>/WEB-INF/config/sdnext-servlet.xml</param-value></init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>sdnext</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
<beans xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemalocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <context:property-placeholder location="classpath:resources/database.properties"> </context:property-placeholder> <context:component-scan base-package="com.dineshonjava"> </context:component-scan> <tx:annotation-driven transaction-manager="hibernateTransactionManager"> </tx:annotation-driven> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="jspViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <property name="prefix" value="/WEB-INF/views/"></property> <property name="suffix" value=".jsp"></property> </bean> <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource"> <property name="driverClassName" value="${database.driver}"></property> <property name="url" value="${database.url}"></property> <property name="username" value="${database.user}"></property> <property name="password" value="${database.password}"></property> </bean> <bean class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" id="sessionFactory"> <property name="dataSource" ref="dataSource"></property> <property name="annotatedClasses"> <list> <value>com.dineshonjava.model.Employee</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto} </prop> </props> </property> </bean> <bean class="org.springframework.orm.hibernate3.HibernateTransactionManager" id="hibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> </beans>addEmployee.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Spring MVC Form Handling</title> </head> <body> <h2>Add Employee Data</h2> <form:form method="POST" action="/sdnext/save.html"> <table> <tr> <td><form:label path="id">Employee ID:</form:label></td> <td><form:input path="id" value="${employee.id}" readonly="true"/></td> </tr> <tr> <td><form:label path="name">Employee Name:</form:label></td> <td><form:input path="name" value="${employee.name}"/></td> </tr> <tr> <td><form:label path="age">Employee Age:</form:label></td> <td><form:input path="age" value="${employee.age}"/></td> </tr> <tr> <td><form:label path="salary">Employee Salary:</form:label></td> <td><form:input path="salary" value="${employee.salary}"/></td> </tr> <tr> <td><form:label path="address">Employee Address:</form:label></td> <td><form:input path="address" value="${employee.address}"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="Submit"/></td> </tr> </table> </form:form> <c:if test="${!empty employees}"> <h2>List Employees</h2> <table align="left" border="1"> <tr> <th>Employee ID</th> <th>Employee Name</th> <th>Employee Age</th> <th>Employee Salary</th> <th>Employee Address</th> <th>Actions on Row</th> </tr> <c:forEach items="${employees}" var="employee"> <tr> <td><c:out value="${employee.id}"/></td> <td><c:out value="${employee.name}"/></td> <td><c:out value="${employee.age}"/></td> <td><c:out value="${employee.salary}"/></td> <td><c:out value="${employee.address}"/></td> <td align="center"><a href="edit.html?id=${employee.id}">Edit</a> | <a href="delete.html?id=${employee.id}">Delete</a></td> </tr> </c:forEach> </table> </c:if> </body> </html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>All Employees</title> </head> <body> <h1>List Employees</h1> <h3><a href="add.html">Add More Employee</a></h3> <c:if test="${!empty employees}"> <table align="left" border="1"> <tr> <th>Employee ID</th> <th>Employee Name</th> <th>Employee Age</th> <th>Employee Salary</th> <th>Employee Address</th> </tr> <c:forEach items="${employees}" var="employee"> <tr> <td><c:out value="${employee.id}"/></td> <td><c:out value="${employee.name}"/></td> <td><c:out value="${employee.age}"/></td> <td><c:out value="${employee.salary}"/></td> <td><c:out value="${employee.address}"/></td> </tr> </c:forEach> </table> </c:if> </body> </html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Spring3MVC with Hibernate3 CRUD Example using Annotations</title> </head> <body> <h2>Spring3MVC with Hibernate3 CRUD Example using Annotations</h2> <h2>1. <a href="employees.html">List of Employees</a></h2> <h2>2. <a href="add.html">Add Employee</a></h2> </body> </html>
Labels: Spring MVC, Spring3.0