微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页示例

本文介绍了Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

博客介绍基于Spring Data这款orm框架加上 Jquery.pagination插件实现的分页功能

博客是基于一款正在开发中的github开源项目的,项目代码地址:

欢迎star(收藏)或者可以下载去学习,还在开发…

介绍一下Spring Data框架

spring Data : Spring 的一个子项目。用于简化数据库访问,支持Nosql 和 关系数据存储。

下面给出SpringData 项目所支持 Nosql 存储:

* MongoDB (文档数据库

* Neo4j(图形数据库

* Redis(键/值存储)

* Hbase(列族数据库

SpringData 项目所支持的关系数据存储技术:

* JDBC

* JPA

JPA Spring Data : 致力于减少数据访问层 (DAO) 的开发量。开发者只要写好持久层接口就好,然后其它的框架会帮程序员实现。

开发步骤:

【Spring Data实现数据获取

本项目是采用maven的,所以可以参考一下我的maven配置:

musesorg.muses1.0-SNAPSHOT4.0.0jeeplatform-adminwarjeeplatform-admin Maven Webapphttp://maven.apache.org4.1.5.RELEASE1.4.2.RELEASE1.6.2.RELEASE4.3.8.Final1.2.34.7.21.0.93.7org.musesjeeplatform-core${jeeplatform.core.version}org.musesjeeplatform-common1.0-SNAPSHOTorg.musesjeeplatform-oss${jeeplatform.oss.version}org.musesjeeplatform-upms1.0-SNAPSHOTjavax.servletservlet-api2.5providedjstljstl1.2taglibsstandard1.1.2log4jlog4j${log4j.version}commons-beanutilscommons-beanutils1.8.3commons-collectionscommons-collections3.2.1net.sf.ezmorphezmorph1.0.6commons-langcommons-lang2.5commons-loggingcommons-logging1.2net.sf.json-libjson-lib2.4jarjdk15compileMysqLmysql-connector-java${MysqL.version}commons-iocommons-io2.0.1commons-fileuploadcommons-fileupload1.2.2org.springframeworkspring-core${spring.version}org.springframeworkspring-beans${spring.version}org.springframeworkspring-context${spring.version}org.springframeworkspring-context-support${spring.version}org.springframeworkspring-jdbc${spring.version}org.springframeworkspring-tx${spring.version}org.springframeworkspring-test${spring.version}testorg.springframeworkspring-web${spring.version}org.springframeworkspring-aop${spring.version}org.aspectjaspectjweaver1.6.10org.springframeworkspring-webmvc${spring.version}org.springframeworkspring-orm${spring.version}org.springframework.dataspring-data-jpa${spring-data-jpa.version}org.springframework.dataspring-data-commons${spring-data-commons.version}org.hibernate.javax.persistencehibernate-jpa-2.1-api1.0.0.Finalorg.hibernatehibernate-core${hibernate.version}org.hibernatehibernate-entitymanager${hibernate.version}org.slf4jslf4j-api1.6.1net.sf.ehcacheehcache-core2.5.0org.hibernatehibernate-ehcache${hibernate.version}com.alibabadruid${druid.version}org.apache.shiroshiro-all${shiro.version}org.apache.veLocityveLocity1.6org.apache.veLocityveLocity-tools2.0org.apache.lucenelucene-core${lucene.version}org.apache.lucenelucene-analyzers-common${lucene.version}org.apache.lucenelucene-queryparser${lucene.version}org.apache.lucenelucene-memory${lucene.version}org.apache.lucenelucene-Highlighter${lucene.version}org.wltea.analyzerIKAnalyzer2012FF_u1system${basedir}/src/main/webapp/WEB-INF/lib/IKAnalyzer2012FF_u1.jarlog4jlog4j${log4j.version}commons-beanutilscommons-beanutils1.8.3commons-collectionscommons-collections3.2.1net.sf.ezmorphezmorph1.0.6commons-langcommons-lang2.5commons-loggingcommons-logging1.2net.sf.json-libjson-lib2.4jarjdk15compileorg.apache.poipoi${poi.version}com.sun.mailjavax.mail1.5.6jeeplatform-admin

设计好数据库,编写一个实体类

package org.muses.jeeplatform.model.entity; import java.util.Date; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; /** * 用户信息的实体类 * @author Nicky */ @Entity @Table(name="sys_user") public class User { /** 用户Id**/ private int id; /** 用户名**/ private String username; /** 用户密码**/ private String password; /** 手机号**/ private int phone; /** 性别**/ private String sex; /** 邮件**/ private String email; /** 备注**/ private String mark; /** 用户级别**/ private String rank; /** 最后一次时间**/ private Date lastLogin; /** 登录iP**/ private String loginIp; /** 图片路径**/ private String imageUrl; /** 注册时间**/ private Date regTime; /** 账号是否被锁定**/ private Boolean locked = Boolean.FALSE; private Set roles; @GeneratedValue(strategy=GenerationType.IDENTITY) @Id public int getId() { return id; } public void setId(int id) { this.id = id; } @Column(unique=true,length=100,nullable=false) public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Column(length=100,nullable=false) public String getpassword() { return password; } public void setPassword(String password) { this.password = password; } public int getPhone() { return phone; } public void setPhone(int phone) { this.phone = phone; } @Column(length=6) public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Column(length=100) public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Column(length=30) public String getMark() { return mark; } public void setMark(String mark) { this.mark = mark; } @Column(length=10) public String getRank() { return rank; } public void setRank(String rank) { this.rank = rank; } @Temporal(TemporalType.DATE) public Date getLastLogin() { return lastLogin; } public void setLastLogin(Date lastLogin) { this.lastLogin = lastLogin; } @Column(length=100) public String getLoginIp() { return loginIp; } public void setLoginIp(String loginIp) { this.loginIp = loginIp; } @Column(length=100) public String getimageUrl() { return imageUrl; } public void setimageUrl(String imageUrl) { this.imageUrl = imageUrl; } @Temporal(TemporalType.DATE) @Column(nullable=false) public Date getRegTime() { return regTime; } public void setRegTime(Date regTime) { this.regTime = regTime; } public Boolean getLocked() { return locked; } public void setLocked(Boolean locked) { this.locked = locked; } }

编写接口实现Spring Data框架的PagingAndSortingRepository接口

package org.muses.jeeplatform.repository; import org.muses.jeeplatform.model.entity.User; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import java.util.Date; public interface UserRepository extends PagingAndSortingRepository { /*User findByUsername(String username); @Query("from User u where u.username=:username and u.password=:password") User findByUsernameAndPassword(@Param("username") String username, @Param("password") String password); @Query("from User u where u.id=:id") User findById(@Param("id") int id); @Query("from User u where date_format(u.lastLogin,'yyyy-MM-dd') between date_format((:startDate),'yyyy-MM-dd') and date_format((:endDate),'yyyy-MM-dd')") Page searchU(@Param("startDate")Date startDate,@Param("endDate")Date endDate, Pageable pageable); */ }

业务类实现:

package org.muses.jeeplatform.service; import java.util.*; import org.muses.jeeplatform.model.entity.User; import org.muses.jeeplatform.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; /** * @description 用户信息管理的业务类 * @author Nicky * @date 2017年3月6日 */ @Service public class UserService { @Autowired UserRepository userRepository; /** * 构建PageRequest对象 * @param num * @param size * @param asc * @param string * @return */ private PageRequest buildPageRequest(int num, int size, Sort.Direction asc, String string) { return new PageRequest(num-1, size,null,string); } /** * 获取所有的菜单信息并分页显示 * @param pageNo * 当前页面数 * @param pageSize * 每一页面的页数 * @return */ @Transactional public Page findAll(int pageNo, int pageSize, Sort.Direction dir, String str){ PageRequest request = buildPageRequest(pageNo, pageSize, dir, str); Page users = userRepository.findAll(request); return users; } }

控制类,采用SpringMVC框架,先编写一个baseController,实现一些通用功能的封装:

package org.muses.jeeplatform.web.controller; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.servlet.ModelAndView; public class BaseController { Logger log = null; /** * 获取日志对象 * @return */ public Logger getInstance(){ if(log == null){ log = LoggerFactory.getLogger(BaseController.class); } return log; } /** * 得到request对象 */ public HttpServletRequest getRequest() { HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); return request; } /** * 得到ModelAndView */ public ModelAndView getModelAndView(){ return new ModelAndView(); } }

控制类实现:

package org.muses.jeeplatform.web.controller; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import org.apache.commons.collections.map.HashedMap; import org.muses.jeeplatform.core.Constants; import org.muses.jeeplatform.core.ExcelViewWrite; import org.muses.jeeplatform.core.JavaEmailSender; import org.muses.jeeplatform.model.entity.User; import org.muses.jeeplatform.service.UserService; import org.muses.jeeplatform.utils.DateJsonValueProcessor; import org.muses.jeeplatform.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.sort; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.util.*; /** * Created by Nicky on 2017/7/29. */ @RequestMapping("/user") @Controller public class UserController extends BaseController{ @Autowired UserService userService; /** * 查询所有管理员信息并分页显示 * @param request * @param response * @param model * @return */ @RequestMapping(value = "/queryAll",produces = "application/json;charset=UTF-8") @ResponseBody public ModelAndView findAll(HttpServletRequest request, HttpServletResponse response, Model model){ //当前页 String pageIndexStr = request.getParameter("pageIndex"); //每一页的页数 int pageSize = Constants.PAGE_SIZE; ModelAndView mv = this.getModelAndView(); Page userPage; if(pageIndexStr==null||"".equals(pageIndexStr)){ pageIndexStr = "0"; } int pageIndex = Integer.parseInt(pageIndexStr); userPage = userService.findAll(pageIndex+1, pageSize, Sort.Direction.ASC,"id"); mv.addobject("totalCount",userPage.getTotalElements()); mv.addobject("pageIndex",pageIndex); // JsonConfig cfg = new JsonConfig(); // cfg.setExcludes(new String[]{"handler","hibernateLazyInitializer"}); JsonConfig jcg = new JsonConfig(); jcg.registerjsonValueProcessor(Date.class, new DateJsonValueProcessor("yyyy-mm-dd")); JSONArray jsonArray = JSONArray.fromObject(userPage.getContent(),jcg); //System.out.println(jsonArray.toString()); mv.addobject("users",jsonArray.toString()); mv.setViewName("admin/user/sys_user_list"); return mv; } }

 【前端页面实现】

页面View实现,引用 jquery.pagination.js (分页js),跟pagination.css(分页样式css)。

可以去这里下载:https://www.html.cn/article/105013.htm

Insert title here

序号

用户名

描述

手机

邮箱

最近登录

上次登录IP

操作

前端页面展示:

ok,本博客是基于一款正在开发中的github开源项目的,项目代码地址:https://github.com/u014427391/jeeplatform

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐