1.基本概述

  • Spring
    Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

  • SpringMVC
    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

  • Spring Data JPA
    Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data JPA 可以极大提高开发效率!

2.整合步骤

2.1.创建WEB项目

2.2.导入依赖

<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>com.sss.demo1</groupId><artifactId>sss-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><!--Spring+SpringMVC+SpringData JPA --><dependencies><!-- 单元测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- 为了方便进行单元测试,添加spring-test包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.3.8.RELEASE</version></dependency><!--Spring Data JPA --><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId><version>1.11.3.RELEASE</version></dependency><!--Spring MVC --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.8.RELEASE</version></dependency><!-- Hibernate --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>5.0.11.Final</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>5.0.11.Final</version></dependency><!--Servlet --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.2.1</version><scope>provided</scope></dependency><!--jsp --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency><!--MySQL数据库驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.29</version></dependency><!-- c3p0数据源 --><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5-pre10</version></dependency><!-- jackson --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.4.2</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.6.4</version></dependency></dependencies><build><plugins><plugin><artifactId>maven-war-plugin</artifactId><configuration><version>3.1</version></configuration></plugin><!-- java编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build></project>

2.3. 新建db.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/sss?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123

2.4. 新建applicationContext.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:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"><!-- 配置自动扫描的包,扫描service层,service上面有注解就直接被spring容器实例化 --><context:component-scan base-package="com.ssm.service.*" /><!-- 1. 配置数据源 --><context:property-placeholder location="classpath:db.properties" /><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="jdbcUrl" value="${jdbcUrl}" /><property name="driverClass" value="${driverClass}" /><property name="user" value="${user}" /><property name="password" value="${password}" /><property name="initialPoolSize" value="${initialPoolSize}" /><property name="maxPoolSize" value="${maxPoolSize}" /></bean><!-- 2. 配置 JPA 的 EntityManagerFactory --><bean id="entityManagerFactory"class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><property name="dataSource" ref="dataSource" /><property name="jpaVendorAdapter"><bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"></bean></property><!-- 配置包扫描,扫描实体 --><property name="packagesToScan" value="com.sss.bean" /><property name="jpaProperties"><props><!-- 生成的数据表的列的映射策略 --><prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop><!-- hibernate 基本属性 --><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop><prop key="hibernate.enable_lazy_load_no_trans">true</prop></props></property></bean><!-- 3. 配置事务管理器 --><bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"><property name="entityManagerFactory" ref="entityManagerFactory" /></bean><!-- 4. 配置支持注解的事务 --><tx:annotation-driven transaction-manager="transactionManager" /><!-- 5. 配置 SpringData,需要加入 jpa 的命名空间 --><!-- base-package: 扫描 Repository Bean 所在的 package --><jpa:repositories base-package="com.sss.dao"entity-manager-factory-ref="entityManagerFactory"></jpa:repositories></beans>

2.5. 新建日志文件log4j.properties

log4j.rootLogger=INFO,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 = logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
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}][%c]%m%n

2.6 新建实体类

@Entity
@Table(name = "t_item")
public class Item {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(length = 20)private String name;// 名称@Column(length = 20)private String type;// 型号@Column(length = 2)private String uint;// 单位@Column(length = 20)private int count;// 数量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 String getType() {return type;}public void setType(String type) {this.type = type;}public String getUint() {return uint;}public void setUint(String uint) {this.uint = uint;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}@Overridepublic String toString() {return "Item [id=" + id + ", name=" + name + ", type=" + type + ", uint=" + uint + ", count=" + count + "]";}
}

2.7. 新建Dao层

public interface ItemDao extends JpaRepository<Item, Serializable>, JpaSpecificationExecutor<Item> {}

2.8 新建业务逻辑层

  • 接口层
public interface ItemService {public List<Item> findAll();public int addItem(Item item);
}
  • 接口层实现层
@Service
@Transactional
public class ItemServiceImpl implements ItemService {@AutowiredItemDao itemDao;@Overridepublic List<Item> findAll() {return itemDao.findAll();}@Overridepublic int addItem(Item item) {Item i = itemDao.save(item);return i != null ? 1 : 0;}
}

2.9 新建控制层

@Controller
@RequestMapping("/item")
public class ItemController {@AutowiredItemService itemSrvice;@RequestMapping("/list")public String list(Model model){List<Item> items = itemSrvice.findAll();model.addAttribute("items", items);return "list";}@RequestMapping("/add")public String add(Item item){int count = itemSrvice.addItem(item);if(count>0){return "forward:/item/list";}else{return "ridrect:/item/list";}}
}

2.10 SpringMvc配置文件

<?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:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 扫表包:控制层包 --><context:component-scan base-package="com.sss.web" /><!-- 视图解析器 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- jsp所在的位置 --><property name="prefix" value="/WEB-INF/jsp/" /><!-- 文件后缀 --><property name="suffix" value=".jsp"></property></bean></beans>

2.10 SpringMvc的web.xml配置

<!-- 配置SpringMvc核心的控制器 DispatcherServlet -->
<servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 配置DispatcherServlet的初始化參數:设置文件的路径和文件名称 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><!--不能写/*,必须写/,这是REST URL风格的要求,REST风格会在后面介绍 --><url-pattern>/</url-pattern></servlet-mapping><!-- 解决工程编码过滤器 --><filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

2.11 Spring的web.xml配置

<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value>
</context-param><!-- 添加Spring的上下文环境监听 -->
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

2.12 页面视图

  • 列表显示
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户列表</title>
<style type="text/css">
table, td {border: 1px solid black;
}table {width: 50%;text-align: center;font-family: 微软雅黑;
}tr:hover {background-color: yellow;
}
</style>
</head>
<body><center><h2>商品列表</h2><hr/><table cellspacing="0"><tr><td>编号</td><td>名称</td><td>型号</td><td>单位</td><td>数量</td><td>操作</td></tr><c:forEach items="${items}" var="item"><tr><td>${item.id}</td><td>${item.name}</td><td>${item.type}</td><td>${item.uint}</td><td>${item.count}</td><td><a href="#">更新</a><a href="#">删除</a></td></tr></c:forEach></table><br /> <a href="${pageContext.request.contextPath}/page/add">新增商品</a></center>
</body>
</html>
  • 新增
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>商品新增</title>
</head>
<body><h2>商品新增</h2><hr/><form action="${pageContext.request.contextPath}/item/add" method="post">标题:<input type="text" name="name"/><br/>类型:<input type="text" name="type"/><br/>单位:<input type="text" name="uint"/><br/>数量:<input type="text" name="count"/><br/><input type="submit" value="新增"/></form>
</body>
</html>

SpringData专题(十四)-SSSP框架整合相关推荐

  1. 开发指南专题十四:JEECG微云快速开发平台MiniDao 介绍

    开发指南专题十四:JEECG微云快速开发平台MiniDao 介绍 13.MiniDao 介绍 13.1.  MiniDao简介及特征 MiniDao是Jeecg自己的持久化解决方案,具备了Hibern ...

  2. [C# 基础知识系列]专题十四:深入理解Lambda表达式

    引言: 对于刚刚接触Lambda表达式的朋友们,可能会对Lambda表达式感到非常疑惑,它到底是个什么什么样的技术呢?以及它有什么好处和先进的地方呢?下面的介绍将会解除你这些疑惑. 一.Lambda表 ...

  3. 搭建大型分布式服务(十四)SpringBoot整合dubbo starter

    一.本文要点 接上文,我们已经把SpringBoot整合mybatis+Hikari+es+redis+kafka了,本文将介绍SpringBoot如何整合dubbo.系列文章完整目录 dubbo注解 ...

  4. “kuangbin带你飞”专题计划——专题十四:数论基础

    写在前面 1.目前还没啥写的.开始时间:2021-05-13(其实博客上看得到该博客创建时间的) 2.上一个专题刷的是网络流(博客总结),属于第一次接触.本来想的是一周特别高效,然后一周略划水,结果是 ...

  5. [kuangbin带你飞]专题十四 数论基础

    A - Bi-shoe and Phi-shoe --筛素数 题意 一个竹竿长度为p,它的score值就是比p长度小且与且与p互质的数字总数,比如9有1,2,4,5,7,8这六个数那它的score就是 ...

  6. 【二十四】springboot使用EasyExcel和线程池实现多线程导入Excel数据

      springboot篇章整体栏目:  [一]springboot整合swagger(超详细 [二]springboot整合swagger(自定义)(超详细) [三]springboot整合toke ...

  7. ssm框架整合_框架整合战斗压缩粮篇SpringCloud+SpringBoot+SSM

    各位小伙伴今天又敲了多少Bug了,今天改Bug又花了多长时间啦,我们每天就是敲Bug,敲完改,改完敲,习惯就好啦,心态摆正.Debug起来!!! 上次是Dubbo整合,今天终结篇Cloud整合,不要废 ...

  8. JavaEE——SSM框架整合实现学生信息注册案例

    目录 十.SSM框架整合实现学生信息注册案例 1. 创建06-ssm的web项目 2. 修改web.xml版本为4.0 3. 更新pom.xml文件 4. jdbc的属性文件和日志文件 5. appl ...

  9. Spring Boot(十四):spring boot整合shiro-登录认证和权限管理

    Spring Boot(十四):spring boot整合shiro-登录认证和权限管理 使用Spring Boot集成Apache Shiro.安全应该是互联网公司的一道生命线,几乎任何的公司都会涉 ...

最新文章

  1. usaco fencing the cows
  2. FPGA等效门数的计算方法
  3. bat 快速切换路径
  4. 十年Java编程开发生涯,java计算时间差毫秒
  5. origin中文版散点图拟合曲线_「测试狗」Origin入门教程:如何进行单段及多段线性拟合...
  6. B+树索引和哈希索引的区别——我在想全文搜索引擎为啥不用hash索引而非得使用B+呢?...
  7. 程序员节,10月24日!
  8. python模块之序列化模块
  9. spring源码分析之spring-core总结篇
  10. linux proc 占用空间,一种诡异的Linux磁盘空间被占满问题
  11. 如何让 Hyper-V 和 VMware 虚拟机软件共存?
  12. sklearn自学指南(part33)--流形学习
  13. 微软SQL Server 2012新特性Silverlight报表客户端 - Power View
  14. alipay.php on line 85,Ecshop报错:Strict Standards: Redefining already defined constructor for class...
  15. 【Elasticsearch】关于 Analyzers 的一切,第2部分
  16. WebSocket + 微信小程序 一对一聊天
  17. [高通SDM450][Android9.0]CTA认证--去掉彩信、短信、通话功能
  18. 双目立体匹配修炼之路
  19. GitHub里的MySQL基础架构自动化测试
  20. 今年底出版《算法竞赛》,这是大纲

热门文章

  1. Css 样式点击穿透
  2. 神策数据:如何通过产品与服务加速媒体深度融合?
  3. Creating PDBs with SQL*Plus
  4. rust的矿坑_Rust入坑指南:鳞次栉比
  5. Sqoop基本原理及常用方法
  6. CSS3学习(五):display 属性
  7. C# WeakReference
  8. 飒,京准NTP校时服务器产品配置步骤
  9. python怎么把照片转成卡通_Python实现将照片变成卡通图片的方法【基于opencv】
  10. 贺新春丨大年初五 喜迎财神