IDEA使用maven创建Spring-Spring-MVC-hibernate总结
来源:互联网 发布:ajax过程 js 编辑:程序博客网 时间:2024/06/05 16:08
目录结构如下
首先看一下数据库 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>
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,Filelog4j.appender.Console=org.apache.log4j.ConsoleAppenderlog4j.appender.Console.Target=System.outlog4j.appender.Console.layout=org.apache.log4j.PatternLayoutlog4j.appender.Console.layout.ConversionPattern=[%c]%m%nlog4j.appender.File=org.apache.log4j.RollingFileAppender log4j.appender.File.File=mybatis.loglog4j.appender.File.MaxFileSize=10MBlog4j.appender.File.Threshold=ALLlog4j.appender.File.layout=org.apache.log4j.PatternLayoutlog4j.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=convertToNulljdbc_user=rootjdbc_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. */@Controllerpublic 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>最后的效果 没有进行界面的美化
1 0
- IDEA使用maven创建Spring-Spring-MVC-hibernate总结
- IDEA使用maven创建Spring MVC WEB项目
- IDEA 创建Spring MVC + MAVEN 项目
- IDEA中创建MAVEN spring mvc项目
- IDEA+spring +mvc +maven
- 使用Intellij IDEA通过Maven+Hibernate+Spring Mvc构建Java后台
- idea maven spring mvc mybatis
- IDEA 创建基于Maven的spring mvc框架
- IDEA 创建基于Maven的spring mvc框架
- Intellij IDEA 15.0.2创建Spring MVC Maven项目
- IDEA创建Maven的Spring MVC项目Demo
- IntelliJ idea创建Spring MVC的Maven项目
- IntelliJ IDEA上创建Maven Spring MVC项目
- IntelliJ IDEA上创建Maven Spring MVC项目
- IntelliJ IDEA 2016.3.2(64) 创建maven spring mvc webApp
- IntelliJ IDEA上创建maven Spring MVC项目
- IntelliJ IDEA上创建Maven Spring MVC项目
- IntelliJ IDEA上创建Maven Spring MVC项目
- deferred对象详解
- JavaScript数组
- 您的设计模式——装饰模式【Decorator Pattern 】
- LintCode-463.Sort Integers
- 如何将*.wmv,*.avi等格式保存到iphone本地,并且可以不借助另外的播放器app打开?
- IDEA使用maven创建Spring-Spring-MVC-hibernate总结
- (一)消息隐射机制(学习鸡啄米vs2010之MFC入门到精通教程笔记)
- 图像处理 C语言 文本图像的倾斜校正
- 基于Spring Boot和Spring Cloud实现微服务架构学习
- android:windowSoftInputMode属性
- 计蒜客 组合运算式
- jQuery学习教程二十四: jQuery
- volatile关键字及其作用
- LeetCode 310 Minimum Height Trees