Maven学习笔记(十)-Maven整合SSHSJ(Spring+SpringMVC+Hibernate+Spring Data JPA+JdbcTemplate)框架

本文主要是介绍Maven学习笔记(十)-Maven整合SSHSJ(Spring+SpringMVC+Hibernate+Spring Data JPA+JdbcTemplate)框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、所用版本与步骤


四个框架所使用的版本:

Spring ---- 4.1.3.RELEASE

Spring mvc ---- 4.1.3.RELEASE

Spring Data JPA----1.3.2.RELEASE

hibernate ---- 4.3.11.Final


其它:

junit ---- 4.12
MySQL ---- 5.1.35
log4j ---- 1.2.17
c3p0 ---- 0.9.2.1

jstl ---- 1.2


二、整合框架


步骤和前面的Spring+SpringMVC+Hibernate整合差不多,主要的差别就是这里使用了Spring Data JAP中的EntityManagerFactory,而不是Hibernate中的SessionFactory


JPA使用EntityManagerFactory开闭session,而Hibernate使用SessionFactory开闭session。两者区别:

1. EntityManagerFactory是JPA的标准API,如果使用EntityManagerFactory,在更换实现JPA的ORM框架时,需要改动的代码很少。如果使用SessionFactory,因为SessionFactory是Hibernate的,无法直接更换ORM框架,更换ORM的话,需要修改所有的代码。

2. 如果想使用Hibernate的某些高级特性,只能使用SessionFactory,使用EntityManagerFactory无法享受Hibernate的高级用法。


项目结构:





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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.fendo</groupId><artifactId>JPA</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>JPA Maven Webapp</name><url>http://maven.apache.org</url><properties><junit.version>4.12</junit.version><servlet.version>3.1.0</servlet.version><jstl.version>1.2</jstl.version><taglibs.version>1.1.2</taglibs.version><spring.version>4.1.3.RELEASE</spring.version><jpa.version>1.3.2.RELEASE</jpa.version><hibernat.version>4.3.11.Final</hibernat.version><mysql.version>5.1.35</mysql.version><dhcp.version>1.2.2</dhcp.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${servlet.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>${jstl.version}</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>${taglibs.version}</version></dependency><!-- Spring start --><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</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-beans</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-jdbc</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-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId><version>${jpa.version}</version></dependency><!-- Hibernate --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>${hibernat.version}</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>${hibernat.version}</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-ehcache</artifactId><version>${hibernat.version}</version></dependency><!-- Mysql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>${dhcp.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.12</version></dependency><dependency><groupId>com.jolbox</groupId><artifactId>bonecp</artifactId><version>0.8.0.RELEASE</version></dependency><dependency><groupId>com.jolbox</groupId><artifactId>bonecp-spring</artifactId><version>0.8.0.RELEASE</version></dependency><dependency><groupId>com.jolbox</groupId><artifactId>bonecp-provider</artifactId><version>0.8.0-alpha1</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.7</version></dependency><dependency><groupId>cglib</groupId><artifactId>cglib-nodep</artifactId><version>3.2.0</version></dependency><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.1</version></dependency><dependency><groupId>ant</groupId><artifactId>ant</artifactId><version>1.6.5</version></dependency><dependency><groupId>org.apache.avro</groupId><artifactId>avro</artifactId><version>1.7.7</version></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.2</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.4</version></dependency><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>net.sf.ezmorph</groupId><artifactId>ezmorph</artifactId><version>1.0.6</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>18.0</version></dependency><dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.20.0-GA</version></dependency><dependency><groupId>org.jboss.logging</groupId><artifactId>jboss-logging</artifactId><version>3.3.0.Final</version></dependency><!-- jackson --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.5.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.5.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.5.0</version></dependency></dependencies><build><plugins><!-- 编码和编译 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.8</source><target>1.8</target><encoding>utf8</encoding></configuration></plugin></plugins><finalName>JPA</finalName></build>
</project>



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:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"xmlns:cache="http://www.springframework.org/schema/cache"xmlns:jaxws="http://cxf.apache.org/jaxws"xmlns:jpa="http://www.springframework.org/schema/data/jpa"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/context      http://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsdhttp://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd" default-lazy-init="true"><!-- 启动组件扫描,排除@Controller组件,该组件由SpringMVC配置文件扫描 --><context:component-scan base-package="com.fendo"><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /></context:component-scan><!-- 属性文件位置 --><context:property-placeholder location="classpath:config.properties" /><!-- 数据源 --><bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"destroy-method="close"><!-- 数据库驱动 --><property name="driverClass" value="${jdbc.driverClassName}" /><!-- 相应驱动的jdbcUrl--><property name="jdbcUrl" value="${jdbc.url}" /><!-- 数据库的用户名 --><property name="username" value="${jdbc.username}" /><!-- 数据库的密码 --><property name="password" value="${jdbc.password}" /></bean><!-- JPA实体管理器工厂 --><bean id="entityManagerFactory"class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><property name="dataSource" ref="dataSource" /><property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter" /><!-- 加入定制化包路径 --><property name="packagesToScan" value="com.fendo.entity" /><property name="jpaProperties"><props><prop key="hibernate.current_session_context_class">thread</prop><prop key="hibernate.hbm2ddl.auto">update</prop><!-- validate/update/create --><prop key="hibernate.show_sql">false</prop><prop key="hibernate.format_sql">false</prop><!-- 建表的命名规则 --><prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop></props></property></bean><!-- 设置JPA实现厂商的特定属性 --><bean id="hibernateJpaVendorAdapter"class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"><property name="databasePlatform" value="${hibernate.dialect}"/></bean><!-- Jpa 事务配置 --><bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"><property name="entityManagerFactory" ref="entityManagerFactory"/></bean><!-- Spring Data Jpa配置 --><jpa:repositories base-package="com.fendo"  transaction-manager-ref="transactionManager" entity-manager-factory-ref="entityManagerFactory"/><!-- 使用annotation定义事务 --><tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
</beans>


Spring-mvc.xml文件为:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd" ><!-- 启用SpringMVC的注解功能,它会自动注册HandlerMapping、HandlerAdapter、ExceptionResolver的相关实例 --><mvc:annotation-driven /><!-- SpringMVC的扫描范围 --><context:component-scan base-package="com.fendo.controller" use-default-filters="false"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/><context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/></context:component-scan><!-- 默认访问跳转到登录页面,即定义无Controller的path<->view直接映射 <mvc:view-controller path="/" view-name="redirect:/login"/>--><!-- 静态文件访问 --><!-- <mvc:resources mapping="/resources/**" location="/resources/" /> --><!-- 用于返回json格式 --><bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">    <property name="supportedMediaTypes">    <list><value>application/x-www-form-urlencoded;charset=UTF-8</value></list></property></bean><!-- 完成请求和注解POJO的映射 --><bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"><list><ref bean="mappingJacksonHttpMessageConverter" /></list></property></bean><!-- 配置SpringMVC的视图解析器 --> <!-- 其viewClass属性的默认值就是org.springframework.web.servlet.view.JstlView -->  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> --><property name="prefix" value="/" /><property name="suffix" value=".jsp" /></bean><!-- 静态资源加载 --><mvc:resources location="/css/" mapping="/css/**" /><mvc:resources location="/images/" mapping="/images/**" /><mvc:resources location="/ATTACHMENT/" mapping="/ATTACHMENT/**" /></beans>

config.properties文件为:

jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc\:mysql\://localhost\:3306/test?useUnicode\=true&characterEncoding\=UTF-8jdbc.username=rootjdbc.password=123hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialectBoneCP.idleConnectionTestPeriod=60BoneCP.idleMaxAge=60BoneCP.maxConnectionsPerPartition=5BoneCP.minConnectionsPerPartition=1BoneCP.partitionCount=3BoneCP.acquireIncrement=2  BoneCP.statementsCacheSize=0 BoneCP.releaseHelperThreads=3


web.xml文件为:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"><display-name>Archetype Created Web Application</display-name><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:applicationContext*.xml</param-value></context-param><!-- 防止发生java.beans.Introspector内存泄露,应将它配置在ContextLoaderListener的前面 -->  <!-- 详细描述见http://blog.csdn.net/jadyer/article/details/11991457 -->  <listener>  <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  </listener>  <!-- 实例化Spring容器 -->  <!-- 应用启动时,该监听器被执行,它会读取Spring相关配置文件,其默认会到WEB-INF中查找applicationContext.xml -->  <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 配置编码过滤器 --><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><!-- 配置spring管理OpenEntityManagerInViewFilter--><!-- OpenEntityManagerInViewFilter会让session一直到view层调用结束后才关闭Spring针对Hibernate的非JPA实现用的是OpenSessionInViewFilter,原理与这个大同小异--><filter><filter-name>hibernateFilter</filter-name><filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class></filter><filter-mapping><filter-name>hibernateFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 用默认的servlet来处理资源 --><servlet-mapping>  <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern>    </servlet-mapping> <servlet-mapping>  <servlet-name>default</servlet-name> <url-pattern>*.png</url-pattern>    </servlet-mapping>     <servlet-mapping>  <servlet-name>default</servlet-name> <url-pattern>*.gif</url-pattern>    </servlet-mapping> <servlet-mapping>  <servlet-name>default</servlet-name> <url-pattern>*.woff</url-pattern>    </servlet-mapping> <servlet-mapping>  <servlet-name>default</servlet-name> <url-pattern>*.ttf</url-pattern>    </servlet-mapping>          <servlet-mapping>  <servlet-name>default</servlet-name> <url-pattern>*.map</url-pattern>    </servlet-mapping>      <servlet-mapping>      <servlet-name>default</servlet-name>   <url-pattern>*.js</url-pattern>   </servlet-mapping>  <servlet-mapping>       <servlet-name>default</servlet-name>      <url-pattern>*.css</url-pattern>     </servlet-mapping>  <servlet-mapping>       <servlet-name>default</servlet-name>      <url-pattern>*.html</url-pattern>     </servlet-mapping><!-- SpringMVC核心分发器 --><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath*:/spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><welcome-file-list><welcome-file>/index.html</welcome-file></welcome-file-list>
</web-app>


User实体类:

package com.fendo.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 = "tb_user")
public class User implements Serializable {private static final long serialVersionUID = 7419229779731522702L;@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "id")private Long id;@Column(name="user_name")private String name;@Column(length = 50)private String account;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public static long getSerialversionuid() {return serialVersionUID;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

UserDao类:


package com.fendo.dao;import org.springframework.data.jpa.repository.JpaRepository;import com.fendo.entity.User;public interface UserDao extends JpaRepository<User, Long> {}

UserService类:

package com.fendo.service;import java.util.List;import javax.transaction.Transactional;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;import com.fendo.dao.UserDao;
import com.fendo.entity.User;@Service
@Transactional
public class UserService {@Autowiredprivate UserDao userDao;public String add(User user){userDao.save(user);return "添加成功!";}public String addUser(String account){User user = new User();user.setAccount(account);userDao.save(user);return "添加成功!";}public User getOneUser(Long id){return userDao.findOne(id);}public List<User> findAll(){return userDao.findAll();}}


UserController类:
package com.fendo.controller;import java.util.List;import javax.persistence.Column;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;import com.fendo.entity.User;
import com.fendo.service.UserService;@Controller
@RequestMapping(value="user")
public class UserController {@Autowiredprivate UserService userService;@RequestMapping("/addUser")    public ModelAndView addPerson(User user){    System.out.println("页面数据:"+user.toString());    //加入数据    userService.add(user);    //查数据    List<User> ls=userService.findAll();//存起来    ModelAndView modelAndView=new ModelAndView();    modelAndView.setViewName("success");    modelAndView.addObject("user", ls);  return modelAndView;    } }

index.jsp


<%@ 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>    <form action="user/addUser" method="post">    name:<input type="text" name="name"/><br/>    <input type="submit" value="添加"/><br/>    </form>    
</body>    
</html>    

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>    
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>        
<!-- EL表达式生效 -->    
<%@ page isELIgnored="false" %>    
<!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>Insert title here</title>    
</head>    
<body>    <table border="1">    <tr>    <th>姓名</th>    </tr>   <c:forEach items="${user}" var="p">    <tr>    <td>${p.name}</td>    </tr>    </c:forEach>  </table>    
</body>    
</html>    



加入JdbcTemplate


然后在applicationContext.xml中注入JdbcTemplate


    <!-- 实例化jdbcTemplate,同时注入数据源 --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"p:dataSource-ref="dataSource" />

新建JdbcDao类:


package com.fendo.dao;import java.util.List;import com.fendo.entity.User;public interface JdbcDao {public String searchUserName(int id);public List<User> findAll();
}


JdbcDaoImp实现类:


package com.fendo.dao.imp;import java.util.List;
import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;import com.fendo.dao.JdbcDao;
import com.fendo.entity.User;@Service
public class JdbcDaoImp implements JdbcDao{@AutowiredJdbcTemplate jdbcTemplate;@Overridepublic String searchUserName(int id) {String sql = "select user_name from tb_user where id=?";  // 返回类型为String(String.class)  return jdbcTemplate.queryForObject(sql, String.class, id);  }@Overridepublic List<User> findAll() {String sql="select * from tb_user";List<Map<String,Object>> lists = jdbcTemplate.queryForList(sql); return User.toObject(lists);  }}


在User实体类中加入:


public static User toObject(Map map) {  User user = new User();  user.setId((Long) map.get("id"));  user.setName((String) map.get("user_name"));  return user;  }  public static List toObject(List<Map<String,Object>> lists){  List users = new ArrayList();  for (Map map : lists) {  User user =  User.toObject(map);  if (user != null) {  users.add(user);  }  }  return users;  }  



然后在UserController注入:


    @Autowiredprivate JdbcDaoImp jdbcDaoImp;


写个获取所有数据的Controller


@RequestMapping("/getAll")public ModelAndView getAll(){List<User> lst=jdbcDaoImp.findAll();ModelAndView modelAndView=new ModelAndView();    modelAndView.setViewName("success");    modelAndView.addObject("user", lst);  return modelAndView;}



三、测试功能


运行项目访问:http://localhost:8099/JPA/index.jsp


效果如下:



输入用户名点击添加,添加成功之后,打印所有的数据:




完整示例: http://download.csdn.net/detail/u011781521/9866948 没有加入JdbcTemplate


通过JdbcTemplate获取所有的数据: http://localhost:8099/JPA/user/getAll





带JdbcTemplate的示例: http://download.csdn.net/detail/u011781521/9867172


这篇关于Maven学习笔记(十)-Maven整合SSHSJ(Spring+SpringMVC+Hibernate+Spring Data JPA+JdbcTemplate)框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1068625

相关文章

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

解决SpringBoot启动报错:Failed to load property source from location 'classpath:/application.yml'

《解决SpringBoot启动报错:Failedtoloadpropertysourcefromlocationclasspath:/application.yml问题》这篇文章主要介绍... 目录在启动SpringBoot项目时报如下错误原因可能是1.yml中语法错误2.yml文件格式是GBK总结在启动S

Spring中配置ContextLoaderListener方式

《Spring中配置ContextLoaderListener方式》:本文主要介绍Spring中配置ContextLoaderListener方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录Spring中配置ContextLoaderLishttp://www.chinasem.cntene

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu

Java Optional避免空指针异常的实现

《JavaOptional避免空指针异常的实现》空指针异常一直是困扰开发者的常见问题之一,本文主要介绍了JavaOptional避免空指针异常的实现,帮助开发者编写更健壮、可读性更高的代码,减少因... 目录一、Optional 概述二、Optional 的创建三、Optional 的常用方法四、Optio

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St