日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

快速搭建springmvc+spring data jpa工程

發(fā)布時間:2025/3/8 c/c++ 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快速搭建springmvc+spring data jpa工程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、前言

  這里簡單講述一下如何快速使用springmvc和spring data jpa搭建后臺開發(fā)工程,并提供了一個簡單的demo作為參考。

二、創(chuàng)建maven工程

  http://www.cnblogs.com/hujunzheng/p/5450255.html

三、配置文件說明

  1.application.properties

jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/springdata?useUnicode=true&characterEncoding=utf-8 jdbc.username=root jdbc.password=123456 jdbc.pool.initialSize=5 jdbc.pool.maxActive=300 jdbc.pool.maxIdle=10 jdbc.pool.minIdle=8 jdbc.pool.maxWait=60000 jdbc.pool.minEvictableIdleTimeMillis=6000 jdbc.pool.removeAbandoned=true jdbc.pool.removeAbandonedTimeout=120 jdbc.pool.logAbandoned=true jdbc.pool.testOnBorrow=true jdbc.pool.testWhileIdle=true jdbc.pool.validationQuery=select 1 from dual jdbc.pool.validationQueryTimeout=1 jdbc.pool.timeBetweenEvictionRunsMillis=30000 jdbc.pool.numTestsPerEvictionRun=300 View Code

  配置數(shù)據(jù)庫連接的常用屬性

  2.spring公共配置文件

<?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"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.xsd"default-lazy-init="true"><description>Spring公共配置</description><bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>/WEB-INF/config/application.properties</value></list></property></bean><bean id="configProperties"class="org.springframework.beans.factory.config.PropertiesFactoryBean"><property name="locations"><list><value>/WEB-INF/config/application.properties</value></list></property></bean><!-- 使用annotation 自動注冊bean, 并保證@Required、@Autowired的屬性被注入 --><context:component-scan base-package="com.hjz"><context:exclude-filter type="annotation"expression="org.springframework.stereotype.Controller" /><context:exclude-filter type="annotation"expression="org.springframework.web.bind.annotation.ControllerAdvice" /></context:component-scan> </beans> View Code

  配置configProperties(可以在xml文件中讀取application.properties中屬性),當(dāng)然換成<context:property-placeholder?location="application.properties"/>更簡潔一些。還有就是使用annotation 自動注冊bean, 并保證@Required、@Autowired的屬性被注入,這里排除了Controller注解類的掃描。

  3.spring mvc配置文件

<?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/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsdhttp://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.xsd"><context:component-scan base-package="com.hjz"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><mvc:annotation-driven><mvc:message-converters register-defaults="true"><bean class="org.springframework.http.converter.StringHttpMessageConverter"><constructor-arg value="UTF-8" /><property name="writeAcceptCharset" value="false" /></bean><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="prettyPrint" value="true" /></bean></mvc:message-converters></mvc:annotation-driven><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/" /><property name="suffix" value=".jsp" /></bean><!-- 靜態(tài)資源訪問 --><mvc:resources location="/WEB-INF/img/" mapping="/img/**"/> <mvc:resources location="/WEB-INF/js/" mapping="/js/**"/> <mvc:resources location="/WEB-INF/css/" mapping="/css/**"/> <mvc:default-servlet-handler /></beans> View Code

  配置對Controller注解類的掃描,消息轉(zhuǎn)換器(針對String和Json的解析),視圖解析器(這里只配置了jsp的視圖解析器),靜態(tài)資源的訪問映射。

  4.spring data jpa配置文件

<?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:tx="http://www.springframework.org/schema/tx"xmlns:jpa="http://www.springframework.org/schema/data/jpa"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-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"default-lazy-init="true"><!-- 數(shù)據(jù)源配置, 使用Tomcat JDBC連接池 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><!--initialSize: 初始化連接 --><property name="initialSize" value="${jdbc.pool.initialSize}" /><!--maxActive: 最大連接數(shù)量 --><property name="maxActive" value="${jdbc.pool.maxActive}" /><!--minIdle: 最小空閑連接 --><property name="minIdle" value="${jdbc.pool.minIdle}" /><!--maxIdle: 最大空閑連接 --><property name="maxIdle" value="${jdbc.pool.maxIdle}" /><!--maxWait: 超時等待時間以毫秒為單位 --><property name="maxWait" value="${jdbc.pool.maxWait}" /><!-- 連接被泄露時是否打印 --><property name="logAbandoned" value="${jdbc.pool.logAbandoned}" /><!--removeAbandoned: 是否自動回收超時連接 --><property name="removeAbandoned" value="${jdbc.pool.removeAbandoned}" /><!--removeAbandonedTimeout: 超時時間(以秒數(shù)為單位) --><property name="removeAbandonedTimeout" value="${jdbc.pool.removeAbandonedTimeout}" /><!-- 連接在池中保持空閑而不被空閑連接回收器線程(如果有)回收的最小時間值,單位毫秒 --><property name="minEvictableIdleTimeMillis" value="${jdbc.pool.minEvictableIdleTimeMillis}" /><property name="testOnBorrow" value="${jdbc.pool.testOnBorrow}" /><property name="testWhileIdle" value="${jdbc.pool.testWhileIdle}" /><property name="validationQuery" value="${jdbc.pool.validationQuery}" /><property name="validationQueryTimeout" value="${jdbc.pool.validationQueryTimeout}" /><property name="timeBetweenEvictionRunsMillis" value="${jdbc.pool.timeBetweenEvictionRunsMillis}" /><property name="numTestsPerEvictionRun" value="${jdbc.pool.numTestsPerEvictionRun}" /></bean><!-- Jpa Entity Manager 配置 --><bean id="entityManagerFactory"class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><property name="dataSource" ref="dataSource" /><property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter" /><property name="packagesToScan"><array><value>com.hjz</value></array></property><property name="jpaProperties"><props><!-- 命名規(guī)則 My_NAME->MyName --><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop><prop key="hibernate.show_sql">true</prop></props></property></bean><!-- Spring Data Jpa配置 --><jpa:repositories base-package="com.hjz"transaction-manager-ref="transactionManager"entity-manager-factory-ref="entityManagerFactory"factory-class="com.hjz.dao.impl.BaseDaoFactoryBean"></jpa:repositories><bean id="hibernateJpaVendorAdapter"class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"><property name="databasePlatform"><bean factory-method="getDialect"class="org.springside.modules.persistence.Hibernates"><constructor-arg ref="dataSource" /></bean></property></bean><!-- Jpa 事務(wù)配置 --><bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"><property name="entityManagerFactory" ref="entityManagerFactory" /></bean><!-- 使用annotation定義事務(wù) --><tx:annotation-driven transaction-manager="transactionManager"proxy-target-class="true" /><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property></bean></beans> View Code

  數(shù)據(jù)源配置, 使用Tomcat JDBC連接池;Jpa Entity Manager 配置;Spring Data Jpa repository 自定義工廠配置。

  5.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_3_0.xsd" version="3.0"><display-name>Archetype Created Web Application</display-name><welcome-file-list><welcome-file>/WEB-INF/views/index.html</welcome-file></welcome-file-list><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/config/applicationContext.xml,/WEB-INF/config/applicationContext-jpa.xml</param-value></context-param><context-param><param-name>spring.profiles.default</param-name><param-value>production</param-value></context-param><filter><filter-name>encodingFilter</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>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter><filter-name>accessControlFilter</filter-name><filter-class>com.hjz.filter.AccessControlFilter</filter-class></filter><filter-mapping><filter-name>accessControlFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><filter><filter-name>openEntityManagerInViewFilter</filter-name><filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class></filter><filter-mapping><filter-name>openEntityManagerInViewFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><servlet><servlet-name>springServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/config/spring-mvc-config.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><session-config><session-timeout>20</session-timeout></session-config><error-page><exception-type>java.lang.Throwable</exception-type><location>/WEB-INF/views/error/500.jsp</location></error-page><error-page><error-code>500</error-code><location>/WEB-INF/views/error/500.jsp</location></error-page><error-page><error-code>404</error-code><location>/WEB-INF/views/error/404.jsp</location></error-page> </web-app> View Code

  配置welcome-file-list,contextConfigLocation,encodingFilter,accessControlFilter(解決跨域訪問),openEntityManagerInViewFilter(將一個JPAsession與一次完整的請求過程對應(yīng)的線程相綁定,session在整個view層結(jié)束后才關(guān)閉。),Spring?ContextLoaderListener,Spring MVC?DispatcherServlet。

四、spring data jpa自定義repository工廠

  1.基礎(chǔ)實體類

package com.hjz.entity;import org.hibernate.annotations.GenericGenerator;import javax.persistence.Column; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.MappedSuperclass; import java.io.Serializable; import java.sql.Timestamp;@MappedSuperclass public abstract class AbsIdEntity implements Serializable {private static final long serialVersionUID = 7988377299341530426L;public final static int IS_DELETE_YES = 1;// 標(biāo)記刪除public final static int IS_DELETE_NO = 0;// 未刪除,保留的@Id@GenericGenerator(name="uuid", strategy="uuid")@GeneratedValue(generator="uuid")protected String id;@Column(name = "creationtime")protected Timestamp creationTimestamp = new Timestamp(System.currentTimeMillis());@Column(name = "lastmodifiedtime")protected Timestamp modificationTimestamp = new Timestamp(System.currentTimeMillis());@Column(name = "dr")protected int dr;// 是否刪除。0:未刪除;1:已刪除/*** 主鍵,對應(yīng)id字段*/public String getId() { return id; }public void setId(String id) { this.id = id; }/*** 創(chuàng)建日期,對應(yīng)ts_insert字段*/public Timestamp getCreationTimestamp() { return creationTimestamp; }public void setCreationTimestamp(Timestamp creationTimestamp) { this.creationTimestamp = creationTimestamp; }/*** 修改日期,對應(yīng)ts_update字段*/public Timestamp getModificationTimestamp() { return modificationTimestamp; }public void setModificationTimestamp(Timestamp modificationTimestamp) { this.modificationTimestamp = modificationTimestamp; }/*** 是否刪除,對應(yīng)dr字段* @return*/public int getDr() {return dr;}public void setDr(int dr) {this.dr = dr;}} View Code

  首先說明,所有的實體類都會繼承 基礎(chǔ)實體類?AbsIdEntity。

  對應(yīng)的VO類

package com.hjz.vo;import java.io.Serializable;public class PersonVO extends SuperVO implements Serializable{private static final long serialVersionUID = -4745138914786180462L;private String name;private int age;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;} } View Code

  2.自定義工廠

package com.hjz.dao.impl;import java.io.Serializable; import javax.persistence.EntityManager; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.support.JpaRepositoryFactory; import org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean; import org.springframework.data.jpa.repository.support.SimpleJpaRepository; import org.springframework.data.repository.core.RepositoryInformation; import org.springframework.data.repository.core.RepositoryMetadata; import org.springframework.data.repository.core.support.RepositoryFactorySupport;import com.hjz.entity.AbsIdEntity;public class BaseDaoFactoryBean<R extends JpaRepository<T, Serializable>, T extends AbsIdEntity> extends JpaRepositoryFactoryBean<R, T, Serializable> {@Overrideprotected RepositoryFactorySupport createRepositoryFactory(final EntityManager entityManager) {return new JpaRepositoryFactory(entityManager) {protected SimpleJpaRepository<T, Serializable> getTargetRepository(RepositoryInformation information, EntityManager entityManager) {return new BaseDaoImpl((Class<T>) information.getDomainType(), entityManager);}@Overrideprotected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) {return BaseDaoImpl.class;}};} } View Code

?  工廠中返回的自定義的JpaRepository, 如下。

  3.自定義JpaRepository

package com.hjz.dao.impl;import java.io.Serializable; import java.sql.Timestamp;import javax.persistence.EntityManager;import org.springframework.data.jpa.repository.support.JpaEntityInformation; import org.springframework.data.jpa.repository.support.SimpleJpaRepository; import org.springframework.transaction.annotation.Transactional;import com.hjz.dao.BaseDao; import com.hjz.entity.AbsIdEntity; @Transactional public class BaseDaoImpl<T extends AbsIdEntity> extends SimpleJpaRepository<T, Serializable> implements BaseDao<T> {private final EntityManager entityManager;public BaseDaoImpl(Class<T> domainClass, EntityManager entityManager) {super(domainClass, entityManager);this.entityManager = entityManager;}public BaseDaoImpl(JpaEntityInformation<T, Serializable> information, EntityManager entityManager){super(information, entityManager);this.entityManager = entityManager;}@Overridepublic <S extends T> S save(S entity) {entity.setModificationTimestamp(new Timestamp(System.currentTimeMillis()));return super.save(entity);}//進(jìn)行邏輯刪除 @Overridepublic void delete(T entity) {entity.setDr(1);save(entity);}@Overridepublic void delete(Serializable id) {T entity = findOne(id);entity.setDr(1);this.save(entity);}} View Code

  重寫了刪除方法,這里做邏輯刪除

五、后臺開發(fā)模式

  1.實體類

package com.hjz.entity;import java.io.Serializable;import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table;@Entity @Table(name = "person") public class PersonEntity extends AbsIdEntity implements Serializable{private static final long serialVersionUID = -1649223236097252346L;@Column(name = "name")private String name;@Column(name = "age")private int age;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;} } View Code

  實體對應(yīng)的VO

package com.hjz.vo;import java.io.Serializable;public class PersonVO extends SuperVO implements Serializable{private static final long serialVersionUID = -4745138914786180462L;private String name;private int age;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;} } View Code

?  2.repository類

package com.hjz.dao;import java.util.List;import javax.transaction.Transactional;import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query;import com.hjz.entity.PersonEntity;public interface PersonDao extends BaseDao<PersonEntity>{@Query(value = "select * from person where dr = 0", nativeQuery = true)List<PersonEntity> findAllPersons();@Query(value = "select * from person where dr = 0 and id = ?1", nativeQuery = true)PersonEntity findOneById(String id);@Transactional@Modifying@Query(value = "update PersonEntity set dr = 1 where id in (?1)")int deletePersons(List<String> ids); } View Code

  3.service類

package com.hjz.service;import java.util.ArrayList; import java.util.List;import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root;import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service;import com.hjz.dao.PersonDao; import com.hjz.entity.PersonEntity; import com.hjz.vo.PersonVO;@Service public class PersonService {@Autowiredprivate PersonDao personDao;public List<PersonVO> findAllPersons(){List<PersonVO> listVO = new ArrayList<>();List<PersonEntity> listEntity = personDao.findAllPersons();for(PersonEntity entity : listEntity) {PersonVO vo = new PersonVO();BeanUtils.copyProperties(entity, vo);listVO.add(vo);}return listVO;}public List<PersonVO> findPageablePersons(Pageable pageable){List<PersonVO> listVO = new ArrayList<>();Page<PersonEntity> pageEntity = personDao.findAll(new Specification<PersonEntity>() {@Overridepublic Predicate toPredicate(Root<PersonEntity> root, CriteriaQuery<?> query, CriteriaBuilder cb) {return cb.equal(root.get("dr").as(Integer.class), 0);}}, pageable);for (PersonEntity entity : pageEntity) {PersonVO personVO = new PersonVO();BeanUtils.copyProperties(entity, personVO);listVO.add(personVO);}return listVO;}public long count() {return personDao.count(new Specification<PersonEntity>() {@Overridepublic Predicate toPredicate(Root<PersonEntity> root, CriteriaQuery<?> query, CriteriaBuilder cb) {return cb.equal(root.get("dr").as(Integer.class), 0);}});}public PersonVO findOnePerson(String id){PersonVO vo = new PersonVO();PersonEntity entity = personDao.findOneById(id);BeanUtils.copyProperties(entity, vo);return vo;}public void deleteOnePerson(String id) {personDao.delete(id);}public PersonVO save(PersonVO vo){PersonEntity entity = new PersonEntity();BeanUtils.copyProperties(vo, entity);personDao.save(entity);BeanUtils.copyProperties(entity, vo);return vo;}public void deletePersons(List<String> ids) {personDao.deletePersons(ids);} } View Code

  4.controller類

package com.hjz.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView;import com.alibaba.fastjson.JSONObject; import com.hjz.code.ReturnCode; import com.hjz.page.PagableResponse; import com.hjz.service.PersonService; import com.hjz.vo.PersonVO;@Controller @RequestMapping(value = "person") public class PersonController {@Autowiredprivate PersonService personService;@RequestMapping(value = "save", method = RequestMethod.POST)@ResponseBodypublic JSONObject save(@RequestBody PersonVO personVO){JSONObject ret = new JSONObject();try {personService.save(personVO);ret.put("msg", "保存成功!");ret.put("code", ReturnCode.SUCCESS);} catch (Exception e) {e.printStackTrace();ret.put("msg", "保存失敗!");ret.put("code", ReturnCode.FAILURE);}return ret;}@RequestMapping(value = "del")@ResponseBodypublic JSONObject del(@RequestParam(value="id") String id){JSONObject ret = new JSONObject();try {personService.deleteOnePerson(id);ret.put("msg", "刪除成功!");ret.put("code", ReturnCode.SUCCESS);} catch (Exception e) {e.printStackTrace();ret.put("msg", "刪除失敗!");ret.put("code", ReturnCode.FAILURE);}return ret;}@RequestMapping(value = "delBatch", method = RequestMethod.POST)@ResponseBodypublic JSONObject delBatch(@RequestParam("ids") List<String> ids){JSONObject ret = new JSONObject();try {personService.deletePersons(ids);ret.put("msg", "批量刪除成功!");ret.put("code", ReturnCode.SUCCESS);} catch (Exception e) {e.printStackTrace();ret.put("msg", "批量刪除失敗!");ret.put("code", ReturnCode.FAILURE);}return ret;}@RequestMapping(value = "page")public ModelAndView page(@RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize) {PageRequest pageRequest = new PageRequest(pageNumber-1, pageSize);PagableResponse<PersonVO> response = new PagableResponse<PersonVO>();response.setPageNumber(pageNumber);response.setPageSize(pageSize);try {List<PersonVO> data = personService.findPageablePersons(pageRequest);long count = personService.count();response.setList(data);response.setCount(count);response.setCode(ReturnCode.SUCCESS);response.setMsg("獲取人員信息成功!");} catch(Exception e) {e.printStackTrace();response.setCode(ReturnCode.FAILURE);response.setMsg("獲取人員信息失敗!"); }return new ModelAndView("person", "page", response);} } View Code

六、前端開發(fā)

  簡單的使用jquery及其一些插件完成了數(shù)據(jù)的分頁(jquery.paginate.js),數(shù)據(jù)的新增,刪除(批量刪除)等操作。具體的頁面代碼請看完整項目。演示效果如下圖所示。

?

  

七、完整項目

?  https://github.com/hjzgg/springmvcAndSpringDataJpa

轉(zhuǎn)載于:https://www.cnblogs.com/hujunzheng/p/5883188.html

總結(jié)

以上是生活随笔為你收集整理的快速搭建springmvc+spring data jpa工程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。