我是靠谱客的博主 发嗲薯片,这篇文章主要介绍IDEA使用maven创建Spring-Spring-MVC-hibernate总结,现在分享给大家,希望可以做个参考。

目录结构如下 



首先看一下数据库 t_class和t_student





maven   pom如下   创建maven请参考我的上一篇文章   

<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.my</groupId>
<artifactId>SpringMvc_Spring_Hibernate</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>SpringMvc_Spring_Hibernate Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<!-- spring版本号 -->
<spring.version>4.0.4.RELEASE</spring.version>
<hibernate.version>4.3.8.Final</hibernate.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- spring核心包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</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-aop</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-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- json数据 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.24</version>
</dependency>
<!--阿里云的数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.28</version>
</dependency>
<!--数据库-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<!--hibernate-->
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.5</version>
</dependency>
</dependencies>
<build>
<finalName>SpringMvc_Spring_Hibernate</finalName>
</build>
</project>

数据库有了   实体bean和hibernate的映射文件是有idea反向工程生成的  


TClassEntity

package com.my.bean;
import java.io.Serializable;
/**
* Created by heyongjie on 2017/2/26.
*/
public class TClassEntity implements Serializable{
private Integer cId;
private String cName;
private Integer teacher;
public Integer getcId() {
return cId;
}
public void setcId(Integer cId) {
this.cId = cId;
}
public String getcName() {
return cName;
}
public void setcName(String cName) {
this.cName = cName;
}
public Integer getTeacher() {
return teacher;
}
public void setTeacher(Integer teacher) {
this.teacher = teacher;
}
}


TStudentEntity


package com.my.bean;
import java.io.Serializable;
/**
* Created by heyongjie on 2017/2/26.
*/
public class TStudentEntity implements Serializable{
private Integer id;
private String name;
private String sex;
private TClassEntity tClassByCId;
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 String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public TClassEntity gettClassByCId() {
return tClassByCId;
}
public void settClassByCId(TClassEntity tClassByCId) {
this.tClassByCId = tClassByCId;
}
}

hibernate     bean映射文件    因为使用的是maven   maven有约束  所以必须放在maven的resourse目录下面 


TclassEntity    映射文件 


<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.my.bean.TClassEntity" table="t_class" schema="test"
lazy="false">
<id name="cId">
<column name="c_id" sql-type="int(11)"/>
</id>
<property name="cName">
<column name="c_name" sql-type="varchar(30)" length="30"/>
</property>
<property name="teacher">
<column name="teacher" sql-type="int(11)"/>
</property>
</class>
</hibernate-mapping>


TStudentEntity    映射文件 


<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.my.bean.TStudentEntity" table="t_student" schema="test" lazy="false">
<id name="id">
<column name="id" sql-type="int(11)"/>
</id>
<property name="name">
<column name="name" sql-type="varchar(30)" length="30"/>
</property>
<property name="sex">
<column name="sex" sql-type="varchar(5)" length="5"/>
</property>
<many-to-one name="tClassByCId" class="com.my.bean.TClassEntity">
<column name="c_id" not-null="true"/>
</many-to-one>
</class>
</hibernate-mapping>


因为要做分页,所以需要一个分页bean

package com.my.bean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* Created by heyongjie on 2017/3/13.
*/
public class PageBean<E> implements Serializable{
private int pageNo;
// 每页显示页数
private int showNo;
// 当前显示页数
private int countNo; // 总共的页数
private List<E> lists = new ArrayList<E>();
// 这页的数据
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getShowNo() {
return showNo;
}
public void setShowNo(int showNo) {
this.showNo = showNo;
}
public int getCountNo() {
return countNo;
}
public void setCountNo(int countNo) {
this.countNo = countNo;
}
public List<E> getLists() {
return lists;
}
public void setLists(List<E> lists) {
this.lists = lists;
}
@Override
public String toString() {
return "PageBean{" +
"pageNo=" + pageNo +
", showNo=" + showNo +
", countNo=" + countNo +
", lists=" + lists +
'}';
}
}


现在看一下spring的配置文件 


因为需要查看日志  所以需要导入一个   log4j.properties 文件  如下  


log4j.rootLogger=DEBUG,Console,File
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c]%m%n
log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.File=mybatis.log
log4j.appender.File.MaxFileSize=10MB
log4j.appender.File.Threshold=ALL
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss,SSS}][%c]%m%n

开闭原则的原因  我们将数据库的配置如用户密码  放在外面   db.properties

这里面做了防止乱码的处理 

jdbc_url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
jdbc_user=root
jdbc_password=123456


spring.xml


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!--从外部读取数据信息 -->
<context:property-placeholder location="classpath:db.properties"/>
<!--扫描
-->
<context:component-scan base-package="com.my.*"/>
<!--配置阿里云的数据源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<!-- 基本属性 url、user、password -->
<property name="url" value="${jdbc_url}"/>
<property name="username" value="${jdbc_user}"/>
<property name="password" value="${jdbc_password}"/>
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="1"/>
<property name="minIdle" value="1"/>
<property name="maxActive" value="20"/>
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000"/>
<property name="validationQuery" value="SELECT 'x'"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/>
<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
<property name="poolPreparedStatements" value="true"/>
<property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
<!-- 配置监控统计拦截的filters -->
<property name="filters" value="stat"/>
</bean>
<!--配置hibernate-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources">
<list>
<value>hibernateCfg/TClassEntity.hbm.xml</value>
<value>hibernateCfg/TStudentEntity.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.show_sql =true
<!--
hibernate.hbm2ddl.auto=create -->
</value>
</property>
</bean>
<!--配置事物管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
</beans>
spring-MVC.xml




<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!-- 扫描controller(controller层注入) -->
<context:component-scan base-package="com.my.controller"/>
<mvc:annotation-driven/>
<!-- 对模型视图添加前后缀 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 处理静态资源 -->
<mvc:default-servlet-handler />
</beans>



下面是我的持久层和服务层代码 


持久层   接口  

package com.my.dao.idao;
import com.my.bean.PageBean;
/**
* Created by heyongjie on 2017/3/13.
*/
public interface IStudentDao {
/**
* 根据显示条数和当前页数获得数据
* @param showNo
每页显示的条数
* @param pageNo
当前页数
* @return
返回分页对象
*/
public PageBean getAllStudent(int showNo, int pageNo);
}


实现 


package com.my.dao;
import com.my.bean.PageBean;
import com.my.dao.idao.IStudentDao;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* Created by heyongjie on 2017/3/13.
*/
@Repository("studentDao")
public class StudentDao implements IStudentDao {
@Autowired
private SessionFactory sessionFactory;
public PageBean getAllStudent(int showNo, int pageNo) {
System.out.println(sessionFactory + "======");
PageBean page = new PageBean();
// 将数据封装到pageBean中
page.setShowNo(showNo);
page.setPageNo(pageNo);
// 分页查询数据
List list = sessionFactory.getCurrentSession().createQuery("FROM TStudentEntity").setFirstResult((pageNo - 1) * showNo).setMaxResults(showNo).list();
// 查询总数据条数
int num = sessionFactory.getCurrentSession().createQuery("from TStudentEntity").list().size();
// 查询总共有多少页
if (num % showNo == 0) {
page.setCountNo(num / showNo);
} else {
page.setCountNo(num / showNo + 1);
}
page.setLists(list);
return page;
}
}


服务层 

接口 


package com.my.server.iserver;
import com.my.bean.PageBean;
/**
* Created by heyongjie on 2017/3/16.
*/
public interface IStudentServer {
/**
* 获得所有的学生信息
分页查询
* @param showNo
每页显示的条数
* @param pageNo
当前页数
* @return
返回分页的信息
*/
public PageBean getAllStudent(int showNo,int pageNo);
}

实现 

package com.my.server;
import com.my.bean.PageBean;
import com.my.dao.idao.IStudentDao;
import com.my.server.iserver.IStudentServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* Created by heyongjie on 2017/3/16.
*/
@Service("studentServer")
public class StudentServer
implements IStudentServer{
@Autowired
private IStudentDao studentDao;
public PageBean getAllStudent(int showNo, int pageNo) {
return studentDao.getAllStudent(showNo,pageNo);
}
}


然后是Controller


package com.my.controller;
import com.my.bean.PageBean;
import com.my.server.iserver.IStudentServer;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
/**
* Created by heyongjie on 2017/3/16.
*/
@Controller
public class StudentController {
@Resource
private IStudentServer studentServer;
// 这里使用的是restFual
风格
@RequestMapping(value = "/getAllStudent/{showNo}/{pageNo}")
@ResponseBody
public PageBean getAllStudent(@PathVariable(value = "showNo") int showNo, @PathVariable(value = "pageNo") int pageNo) {
PageBean page = studentServer.getAllStudent(showNo, pageNo);
System.out.println(page);
return page;
}
}

最后是界面     分页使用的是插件 


<%--
Created by IntelliJ IDEA.
User: heyongjie
Date: 2017/3/16
Time: 10:43
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<link rel="stylesheet" href="../jQueryPage20161027/src/jquery.page.css">
<script type="text/javascript" src="jquery-3.1.0.min.js"></script>
<script type="text/javascript" src="../jQueryPage20161027/src/jquery.page.js"></script>
<script>
$(function () {
// 发送ajax请求
进行数据的初始化
$.ajax({
// 使用resf风格进行传值
url: "../getAllStudent/4/1",
type: "post",
dataType: "json",
success: function (data) {
// 在这里进行页面的拼接
var htmlStr = "";
// 循环拼接表格
$.each(data.lists, function (i) {
htmlStr += "<tr>" +
" <td>" + data.lists[i].id + "</td>" +
"<td>" + data.lists[i].name + "</td>" +
"</tr>";
});
// 最开使的时候加载一次分页
page(data.countNo);
$(".tbody").html(htmlStr);
}
});
function ajaxPage(pageNo){
$.ajax({
// 使用resf风格进行传值
url: "../getAllStudent/4/" + pageNo,
type: "post",
dataType: "json",
success: function (data) {
// 在这里进行页面的拼接
var htmlStr = "";
// 循环拼接表格
$.each(data.lists, function (i) {
htmlStr += "<tr>" +
" <td>" + data.lists[i].id + "</td>" +
"<td>" + data.lists[i].name + "</td>" +
"</tr>";
});
$(".tbody").html(htmlStr);
}
});
};
//
分页
function page(countNo){
// 初始化分页信息
$("#page").Page({
totalPages: countNo,//分页总数
liNums: 7,//分页的数字按钮数(建议取奇数)
activeClass: 'activP', //active 类样式定义
callBack: function (page) {
// 当点击了页数之后
就按照这个页数进行查询
ajaxPage(page);
}
});
}
});
</script>
</head>
<body>
<h1>所有学生的信息 </h1>
<table>
<thead>
<tr>
<th>编号</th>
<th>名字</th>
</tr>
</thead>
<tbody class="tbody">
<tr>
<td>1</td>
<td>1222222</td>
</tr>
</tbody>
</table>

<%--Jq分页插件--%>
<div id="page"></div></body></html>



最后的效果  没有进行界面的美化  




最后

以上就是发嗲薯片最近收集整理的关于IDEA使用maven创建Spring-Spring-MVC-hibernate总结的全部内容,更多相关IDEA使用maven创建Spring-Spring-MVC-hibernate总结内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部