您的位置:首页 > 编程语言 > Java开发

springmvc + hibernate + mysql + maven 简单应用

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

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



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

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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" id="WebApp_ID" version="2.5">
<display-name>Spring4 MVC Hibernate4 Application</display-name>

<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>


4、pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>springmvc</groupId>
<artifactId>springmvc</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<!-- Specifying the Versions of Spring, Hiberante, MySQL etc -->
<properties>
<spring.version>4.1.5.RELEASE</spring.version>
<hibernate.version>4.3.8.Final</hibernate.version>
<mysql.version>5.1.10</mysql.version>
<junit-version>4.11</junit-version>
<servlet-api-version>3.1.0</servlet-api-version>
<jsp-version>2.1</jsp-version>
<jstl-version>1.2</jstl-version>
<java.version>1.7</java.version>
</properties>

<!-- Specifying the Dependencies -->
<dependencies>

<!-- Spring 4 dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>

<!-- Hibernate 4 dependencies -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${hibernate.version}</version>
</dependency>

<!--MYSQL Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>

<!-- Servlet and JSP -->
<!-- <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId>
<version>${servlet-api-version}</version> </dependency> -->

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>

<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp-version}</version>
<scope>provided</scope>
</dependency>

<!-- JSTL dependency -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl-version}</version>
</dependency>

<!-- JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
<scope>test</scope>
</dependency>

<!-- json -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.8.5</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.8.5</version>
</dependency>

</dependencies>

<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>


5、mvc-dispatcher-servlet.xml,里面有一些包名需要修改,自己注意:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
<!-- Specifying base package of the Components like Controller, Service,
DAO -->
<context:component-scan base-package="com.busymonkey" />

<!-- Getting Database properties -->
<context:property-placeholder location="classpath:application.properties" />

<mvc:annotation-driven />

<!-- Specifying the Resource location to load JS, CSS, Images etc -->
<mvc:resources mapping="/resources/**" location="/resources/" />

<!-- View Resolver -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/" />
<property name="suffix" value=".jsp" />
</bean>

<!-- DataSource -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${database.driverClass}" />
<property name="jdbcUrl" value="${database.url}" />
<property name="user" value="${database.username}" />
<property name="password" value="${database.password}" />

<property name="acquireIncrement" value="${connection.acquireIncrement}" />
<property name="minPoolSize" value="${connection.minPoolSize}" />
<property name="maxPoolSize" value="${connection.maxPoolSize}" />
<property name="maxIdleTime" value="${connection.maxIdleTime}" />
</bean>

<!-- Hibernate SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
</props>
</property>
<property name="packagesToScan" value="com.busymonkey.entity"></property>
</bean>

<!-- Transaction -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />
</beans>


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 <T> Serializable create(final T entity) {
return sessionFactory.getCurrentSession().save(entity);
}

public <T> T update(final T entity) {
sessionFactory.getCurrentSession().update(entity);
return entity;
}

public <T> void delete(final T entity) {
sessionFactory.getCurrentSession().delete(entity);
}

public <T> void delete(Serializable id, Class<T> entityClass) {
T entity = fetchById(id, entityClass);
delete(entity);
}

@SuppressWarnings("unchecked")
public <T> List<T> fetchAll(Class<T> entityClass) {
return sessionFactory.getCurrentSession().createQuery(" FROM "+entityClass.getName()).list();
}

@SuppressWarnings("rawtypes")
public <T> List fetchAll(String query) {
return sessionFactory.getCurrentSession().createSQLQuery(query).list();
}

@SuppressWarnings("unchecked")
public <T> T fetchById(Serializable id, Class<T> 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<TestEntity> getAllEmployees();
public TestEntity getEmployee(long id);
public List<TestEntity> 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<TestEntity> getAllEmployees() {
return hibernateUtil.fetchAll(TestEntity.class);
}

@Override
public TestEntity getEmployee(long id) {
return hibernateUtil.fetchById(id, TestEntity.class);
}

@SuppressWarnings("unchecked")
@Override
public List<TestEntity> getAllEmployees(String employeeName) {
String query = "SELECT e.* FROM Employees e WHERE e.name like '%"+ employeeName +"%'";
List<Object[]> employeeObjects = hibernateUtil.fetchAll(query);
List<TestEntity> employees = new ArrayList<TestEntity>();
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<TestEntity> getAllEmployees();
public TestEntity getEmployee(long id);
public List<TestEntity> 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<TestEntity> getAllEmployees() {
return employeeDAO.getAllEmployees();
}
@Override
public TestEntity getEmployee(long id) {
return employeeDAO.getEmployee(id);
}
@Override
public List<TestEntity> 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: