springmvc + hibernate + mysql + maven 简单应用

1、首先安装数据库,教程在这:点击打开链接,还有linux下的:点击打开链接,数据库的名称和标的名称自己可以在之后项目的配置文件中做相应修改。

2、这里平台环境部署是:tomcat 6,jdk 1.7 ,web 2.5 。在eclispe下首先新建web项目,然后转成maven项目,目录结构如下:

springmvc + hibernate + mysql + maven 简单应用_第1张图片


3、现在贴出代码,依次按照新建项目的顺序贴出,首先是 web.xml :



 Spring4 MVC Hibernate4 Application
    
    
        mvc-dispatcher
        org.springframework.web.servlet.DispatcherServlet
        1
    
    
    
        mvc-dispatcher
        /
    




4、pom.xml:


  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
          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 employeeObjects = hibernateUtil.fetchAll(query);
		List employees = new ArrayList();
		for(Object[] employeeObject: employeeObjects) {
			TestEntity employee = new TestEntity();
			long id = ((BigInteger) employeeObject[0]).longValue();			
			int age = (int) employeeObject[1];
			String name = (String) employeeObject[2];
			float salary = (float) employeeObject[3];
			employee.setId(id);
			employee.setName(name);
			employee.setAge(age);
			employee.setSalary(salary);
			employees.add(employee);
		}
		System.out.println(employees);
		return employees;
	}
}



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

你可能感兴趣的:(Web,Spring)