1、首先安装数据库,教程在这:点击打开链接,还有linux下的:点击打开链接,数据库的名称和标的名称自己可以在之后项目的配置文件中做相应修改。
2、这里平台环境部署是:tomcat 6,jdk 1.7 ,web 2.5 。在eclispe下首先新建web项目,然后转成maven项目,目录结构如下:
3、现在贴出代码,依次按照新建项目的顺序贴出,首先是 web.xml :
Spring4 MVC Hibernate4 Application
mvc-dispatcher
org.springframework.web.servlet.DispatcherServlet
1
mvc-dispatcher
/
4.0.0
springmvc
springmvc
0.0.1-SNAPSHOT
war
4.1.5.RELEASE
4.3.8.Final
5.1.10
4.11
3.1.0
2.1
1.2
1.7
org.springframework
spring-core
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-orm
${spring.version}
org.springframework
spring-test
${spring.version}
test
org.hibernate
hibernate-core
${hibernate.version}
org.hibernate
hibernate-c3p0
${hibernate.version}
mysql
mysql-connector-java
${mysql.version}
javax.servlet
javax.servlet-api
3.1.0
javax.servlet.jsp
jsp-api
${jsp-version}
provided
jstl
jstl
${jstl-version}
junit
junit
${junit-version}
test
org.codehaus.jackson
jackson-core-asl
1.8.5
org.codehaus.jackson
jackson-mapper-asl
1.8.5
src
maven-compiler-plugin
3.3
1.7
maven-war-plugin
2.6
WebContent
false
5、mvc-dispatcher-servlet.xml,里面有一些包名需要修改,自己注意:
${hibernate.dialect}
${hibernate.hbm2ddl.auto}
${hibernate.format_sql}
${hibernate.show_sql}
6、application.properties:
#Database related properties
database.driverClass=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost:3306/letv_test
database.username=root
database.password=123456
#Hibernate related properties
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true
#Connection pool related properties
connection.acquireIncrement=2
connection.minPoolSize=20
connection.maxPoolSize=50
connection.maxIdleTime=600
7、TestEntity.java:
package com.busymonkey.entity;
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;
@Entity
@Table(name = "Employees")
public class TestEntity implements Serializable{
private static final long serialVersionUID = -7988799579036225137L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column
private String name;
@Column
private int age;
@Column
private float salary;
public TestEntity() {
super();
}
public TestEntity(String name, int age, float salary) {
super();
this.name = name;
this.age = age;
this.salary = salary;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public float getSalary() {
return salary;
}
public void setSalary(float salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", salary=" + salary +
'}';
}
}
8、TestUtils.java:
package com.busymonkey.utils;
import java.io.Serializable;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class TestUtils {
@Autowired
private SessionFactory sessionFactory;
public Serializable create(final T entity) {
return sessionFactory.getCurrentSession().save(entity);
}
public T update(final T entity) {
sessionFactory.getCurrentSession().update(entity);
return entity;
}
public void delete(final T entity) {
sessionFactory.getCurrentSession().delete(entity);
}
public void delete(Serializable id, Class entityClass) {
T entity = fetchById(id, entityClass);
delete(entity);
}
@SuppressWarnings("unchecked")
public List fetchAll(Class entityClass) {
return sessionFactory.getCurrentSession().createQuery(" FROM "+entityClass.getName()).list();
}
@SuppressWarnings("unchecked")
public List fetchAll(String query) {
return sessionFactory.getCurrentSession().createQuery(query).list();
}
@SuppressWarnings("unchecked")
public T fetchById(Serializable id, Class entityClass) {
return (T)sessionFactory.getCurrentSession().get(entityClass, id);
}
}
9、TestDao.java:
package com.busymonkey.dao;
import java.util.List;
import com.busymonkey.entity.TestEntity;
public interface TestDao {
public long createEmployee(TestEntity employee);
public TestEntity updateEmployee(TestEntity employee);
public void deleteEmployee(long id);
public List getAllEmployees();
public TestEntity getEmployee(long id);
public List getAllEmployees(String employeeName);
}
10、TestDaoImpl.java:
package com.busymonkey.dao.impl;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.busymonkey.dao.TestDao;
import com.busymonkey.entity.TestEntity;
import com.busymonkey.utils.TestUtils;
@Repository
public class TestDaoImpl implements TestDao {
public TestDaoImpl() {
System.out.println("EmployeeDAOImpl");
}
@Autowired
private TestUtils hibernateUtil;
@Override
public long createEmployee(TestEntity employee) {
return (Long) hibernateUtil.create(employee);
}
@Override
public TestEntity updateEmployee(TestEntity employee) {
return hibernateUtil.update(employee);
}
@Override
public void deleteEmployee(long id) {
TestEntity employee = new TestEntity();
employee.setId(id);
hibernateUtil.delete(employee);
}
@Override
public List getAllEmployees() {
return hibernateUtil.fetchAll(TestEntity.class);
}
@Override
public TestEntity getEmployee(long id) {
return hibernateUtil.fetchById(id, TestEntity.class);
}
@SuppressWarnings("unchecked")
@Override
public List getAllEmployees(String employeeName) {
String query = "SELECT e.* FROM Employees e WHERE e.name like '%"+ employeeName +"%'";
List
11、TestService.java:
package com.busymonkey.service;
import java.util.List;
import com.busymonkey.entity.TestEntity;
public interface TestService {
public long createEmployee(TestEntity employee);
public TestEntity updateEmployee(TestEntity employee);
public void deleteEmployee(long id);
public List getAllEmployees();
public TestEntity getEmployee(long id);
public List getAllEmployees(String employeeName);
}
12、TestServiceImpl.java:
package com.busymonkey.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.busymonkey.dao.TestDao;
import com.busymonkey.entity.TestEntity;
import com.busymonkey.service.TestService;
@Service
@Transactional
public class TestServiceImpl implements TestService {
public TestServiceImpl() {
System.out.println("EmployeeServiceImpl()");
}
@Autowired
private TestDao employeeDAO;
@Override
public long createEmployee(TestEntity employee) {
return employeeDAO.createEmployee(employee);
}
@Override
public TestEntity updateEmployee(TestEntity employee) {
return employeeDAO.updateEmployee(employee);
}
@Override
public void deleteEmployee(long id) {
employeeDAO.deleteEmployee(id);
}
@Override
public List getAllEmployees() {
return employeeDAO.getAllEmployees();
}
@Override
public TestEntity getEmployee(long id) {
return employeeDAO.getEmployee(id);
}
@Override
public List getAllEmployees(String employeeName) {
return employeeDAO.getAllEmployees(employeeName);
}
}
13、TestController.java,这里的json返回是不兼容IE浏览器的,谷歌和360是可以的,要兼容IE,看这个教程:点击打开链接:
package com.busymonkey.controller;
import org.jboss.logging.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.busymonkey.entity.TestEntity;
import com.busymonkey.service.TestService;
@Controller
public class TestController {
private static final Logger logger = Logger.getLogger(TestController.class);
public TestController() {
System.out.println("EmployeeController()");
}
@Autowired
private TestService employeeService;
@RequestMapping("/createEmployee")
@ResponseBody
public String createEmployee() {
TestEntity employee = new TestEntity("busymonkey", 25, 10000);
employeeService.createEmployee(employee);
logger.info("Creating Employee. Data: "+employee);
return "done!";
}
}
最后,这里只是在controller部分实现了最简单的添加数据库功能,之后再加入更新和删除的功能。
注意:被操作的表一定要有主键(int 类型,且有自增长选项),不然会报错:
hibernate could not resolve property