1、创建springMVC项目,搭建环境
2、创建Page.java,存储信息

import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Page {//显示第几页private int pageNow = 1;//每页显示条数private int pageSize = 3;//查询总条数private int totalCount;//查询总页数private int totalPages;//坐标private int offSet;//返回查询数据private List<?> datas;//装载查询条件Map<String,Object> query = new HashMap();public int getPageNow() {return pageNow;}public void setPageNow(int pageNow) {this.pageNow = pageNow;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public int getTotalCount() {return totalCount;}public void setTotalCount(int totalCount) {this.totalCount = totalCount;}public int getTotalPages() {//直接返回总页数return this.totalCount%this.pageSize==0?this.totalCount/this.pageSize:this.totalCount/this.pageSize+1;}public void setTotalPages(int totalPages) {this.totalPages = totalPages;}public List<?> getDatas() {return datas;}public void setDatas(List<?> datas) {this.datas = datas;}public Map<String, Object> getQuery() {return query;}public void setQuery(Map<String, Object> query) {this.query = query;}public int getOffSet() {//显示在数据库里是第几条return (this.pageNow-1)*this.pageSize;}public void setOffSet(int offSet) {this.offSet = offSet;}}

3、创建pojo类,User.java

public class User {private String userId;private String userName;private Integer userAge;private String userSex;private String userRoleId;private Integer userStatus;private String userDeptId;private String userDesc;private String account;private String password;public String getUserId() {return userId;}public void setUserId(String userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public Integer getUserAge() {return userAge;}public void setUserAge(Integer userAge) {this.userAge = userAge;}public String getUserSex() {return userSex;}public void setUserSex(String userSex) {this.userSex = userSex;}public String getUserRoleId() {return userRoleId;}public void setUserRoleId(String userRoleId) {this.userRoleId = userRoleId;}public Integer getUserStatus() {return userStatus;}public void setUserStatus(Integer userStatus) {this.userStatus = userStatus;}public String getUserDeptId() {return userDeptId;}public void setUserDeptId(String userDeptId) {this.userDeptId = userDeptId;}public String getUserDesc() {return userDesc;}public void setUserDesc(String userDesc) {this.userDesc = userDesc;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User [userId=" + userId + ", userName=" + userName + ", userAge=" + userAge + ", userSex=" + userSex+ ", userRoleId=" + userRoleId + ", userStatus=" + userStatus + ", userDeptId=" + userDeptId+ ", userDesc=" + userDesc + ", account=" + account + ", password=" + password + "]";}}

4、编写UserMapper.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.znn.dao.UserMapper"><resultMap type="com.znn.model.User" id="resultUser"><!-- id在数据库中用uuid()方法创建的 --><id property="userId" javaType="String" column="user_id" jdbcType="VARCHAR"/><result property="userName" javaType="String" column="user_name" jdbcType="VARCHAR"/><result property="userAge" javaType="Integer" column="user_age" jdbcType="INTEGER"/><result property="userSex" javaType="String" column="user_sex" jdbcType="VARCHAR"/><result property="userRoleId" javaType="String" column="user_role_id" jdbcType="VARCHAR"/><result property="userStatus" javaType="Integer" column="user_status" jdbcType="INTEGER"/><result property="userDeptId" javaType="String" column="user_dept_id" jdbcType="VARCHAR"/><result property="userDesc" javaType="String" column="user_desc" jdbcType="VARCHAR"/><result property="account" javaType="String" column="account" jdbcType="VARCHAR"/><result property="password" javaType="String" column="password" jdbcType="VARCHAR"/></resultMap><sql id="user_column">user_id,user_name,user_age,user_sex,user_role_id,user_status,user_dept_id,user_desc,account,password</sql><!-- 1、获取用户列表 --><!-- 返回值用Page,因为把所有属性都封装在page里面了 --><select id="selectUserList" resultMap="resultUser" parameterType="com.znn.model.Page">SELECT<include refid="user_column"/>FROM`user`<where><!-- 1、查询的属性可以直接用对象取,即不用page.query调用 2、连接符 and 不能用 && ,如果想用请用转义字符--><if test="query.user_sex != null and query.user_sex != ''">user_sex = #{query.user_sex}</if><if test="query.user_name != null and query.user_name != ''">AND user_name LIKE CONCAT('%',#{query.user_name},'%')</if></where>ORDER BY user_id DESCLIMIT ${offSet},${pageSize}</select><!-- 2、获取用户查询条数 --><select id="queryUserCount" parameterType="com.znn.model.Page" resultType="_int">SELECT COUNT(*) FROM `user`<where><if test="query.user_sex != null and query.user_sex != ''">user_sex = #{query.user_sex}</if><if test="query.user_name != null and query.user_name != ''">AND user_name LIKE CONCAT('%',#{query.user_name},'%')</if></where></select></mapper>

5、编写Dao层接口 UserMapper.java

import java.util.List;
import java.util.Map;import org.springframework.stereotype.Repository;import com.znn.model.Page;
import com.znn.model.User;@Repository
public interface UserMapper {/*** 查询user表全部数据* @return list*/List<User> selectUserList(Page page);/*** 获取总条数* @param page* @return int*/int queryUserCount(Page page);}

6、编写Service层 UserService.java接口

import java.util.List;
import java.util.Map;import com.znn.model.Page;
import com.znn.model.User;public interface UserService {/*** 将查询结果全部添加到page中* @return pagelist*/Page find(Page page);
}

7、编写Service接口实现类

import java.util.List;
import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import com.znn.dao.UserMapper;
import com.znn.model.Page;
import com.znn.model.User;
import com.znn.service.UserService;@Service
public class UserServiceImpl implements UserService {@AutowiredUserMapper userMapper;@Overridepublic Page find(Page page) {//获取全部数据存储到page中page.setDatas(userMapper.selectUserList(page));//获取总条数,用于配置分页page.setTotalCount(userMapper.queryUserCount(page));return page;}}

8、编写Controller

import java.util.ArrayList;
import java.util.List;
import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import com.znn.model.Page;
import com.znn.model.User;
import com.znn.service.UserService;@Controller
public class UserController {@AutowiredUserService userService;//page查询单独一个方法,方便前台ajax取值@RequestMapping("/userList")@ResponseBodypublic Page page(Page page){page = userService.find(page);return page;}@GetMapping("/page")public String page(Page page,Model model) {model.addAttribute("page",page(page));return "view/sys/page";}}

9、编写前台页面,带回显

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%//项目的发布路径,例如: /rabcString path = request.getContextPath();String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()+ path + "/";
%>
<!-- 引入jstl标签 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
<!-- 引入时间标签  格式化时间,有时间查询的时候使用,本文没做处理 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"><title>系统用户管理</title><link rel="shortcut icon" href="favicon.ico">
<link href="resource/css/bootstrap.min.css?v=3.3.6" rel="stylesheet">
<link href="resource/css/font-awesome.css?v=4.4.0" rel="stylesheet"><link href="resource/css/animate.css" rel="stylesheet">
<link href="resource/css/style.css?v=4.1.0" rel="stylesheet"></head>
<script type="text/javascript" src="resource/jquery-3.4.1.min.js"></script><script type="text/javascript"><body class="gray-bg"><div class="row"><div class="col-sm-12"><div class="ibox"><div class="ibox-title"><h5>系统用户管理</h5><!--<div class="ibox-tools"><a href="projects.html" class="btn btn-primary btn-xs">创建新项目</a></div>--></div><form action="page" method="get" id="form"><div class="ibox-content"><div class="row m-b-sm m-t-sm"><div class="col-md-2"><button type="button" id="user-add-btn"class="btn btn-primary btn-sm"><i class="fa fa-user-plus"></i> 新建</button><button type="button" id="user-loading-btn"class="btn btn-white btn-sm"><i class="fa fa-refresh"></i> 刷新</button></div><div class="col-md-2 col-md-offset-4"><select class="input-sm form-control input-s-sm inline"style="font-size: 12px;" name="query['user_sex']"><option value="" id="selector">请选择性别</option><option value="男" <c:if test="${page.query.user_sex =='男'}">selected="selected"</c:if>>男</option><option value="女" <c:if test="${page.query.user_sex =='女'}">selected="selected"</c:if>>女</option></select></div><div class="col-md-3"><div class="input-group">/* query['user_name'] 用于设置属性值,固定写法   query为page中的属性  */<input type="text" placeholder="请输入用户的姓名" name="query['user_name']" value="${page.query.user_name }"class="input-sm form-control"> <spanclass="input-group-btn"><button type="button" id="btn" class="btn btn-sm btn-primary">搜索</button></span></div></div>//编写隐藏域,往后台传值,用于分页<input hidden="hidden" name="pageNow" id="pageNow" value="${page.pageNow }"><input hidden="hidden" id="totalPages" value="${page.totalPages }"></form></div><div class="project-list"><table class="table table-hover"><tbody id="tbody"><c:forEach items="${requestScope.page.datas }" var="user" varStatus="vs"><tr><td class="client-avatar"><img alt="image" onerror="this.src='resource/img/a2.jpg'"src=""></td><td><!-- A标签的样式,暂时没有使用该链接 --> <a href="javascript:;"class="client-link">${user.userName }</a></td><td>${user.account }</td><td class="contact-type"><i class="fa fa-user-secret"></i></td><td>超级管理员</td><td class="client-status"><c:if test="${user.userStatus==1 }" var="flag"><span class="label label-primary">已激活</span></td></c:if><c:if test="${!flag }"><span class="label label-danger">已禁用</span></td></c:if><td class="contact-type"><i class="fa fa-clock-o"> </i></td><td><%-- <fmt:formatDate value="${user.userCreateTime }" pattern="yyyy-MM-dd HH:mm:ss"/> --%>2019-9-9 09:54:34</td><td>${user.userAge }</td><td>${user.userSex }</td><td><a href="system_user_update.html"class="btn btn-success btn-sm"><i class="fa fa-pencil"></i>编辑 </a> <!-- 设置自定义数据 pk-id 用于表示注解 --> <a href="javascript:;"pk-id="-999" user-status="2"class="btn btn-warning btn-sm user-status-btn"><iclass="fa fa-power-off"></i> 禁用 </a> <a href="javascript:;"pk-id="-999" user-status="1"class="btn btn-danger btn-sm user-status-btn"><iclass="fa fa-remove"></i> 删除 </a> <a href="javascript:;"pk-id="-999" user-status="3"class="btn btn-primary btn-sm user-status-btn"><iclass="fa fa-smile-o"></i> 激活 </a> <a href="javascript:;"pk-id="-999" class="btn btn-info btn-sm user-role-btn"><iclass="fa fa-odnoklassniki"></i> 角色 </a> <a href="javascript:;"pk-id="-999" class="btn btn-white btn-sm user-photo-btn"><iclass="fa fa-file-photo-o"></i> 头像 </a></td></tr></c:forEach></tbody></table></div><div class="row m-b-sm m-t-sm"><div class="col-md-2"><span style="line-height: 30px;">显示 ${page.pageNow } 到 ${page.totalPages }项,共${page.totalCount } 项</span></div><div class="col-md-5 col-md-offset-5"><span class="input-group-btn"><button type="button" class="btn btn-sm btn-white" id="first">首页</button><button type="button" class="btn btn-sm btn-white" id="prev">上一页</button><button type="button" class="btn btn-sm btn-white" id="next">下一页</button><button type="button" class="btn btn-sm btn-white" id="end">尾页</button></span></div></div></div></div></div></div><!-- 全局js --><script src="resource/js/jquery.min.js?v=2.1.4"></script><script src="resource/js/bootstrap.min.js?v=3.3.6"></script><script src="resource/js/plugins/layer/layer.min.js"></script><!-- 自定义js --><script src="resource/js/content.js?v=1.0.0"></script><script type="text/javascript">$(function(){$("#end").click("on",function(){$("#pageNow").val($("#totalPages").val());$("#form").submit();})$("#first").click("on",function(){$("#pageNow").val(1);$("#form").submit();})$("#prev").click("on",function(){var pageNow = $("#pageNow").val();if(pageNow==1){layer.msg("已经是第一页了");return false;}$("#pageNow").val(pageNow-1);$("#form").submit();})$("#next").click("on",function(){var pageNow = $("#pageNow").val();if(pageNow==$("#totalPages").val()){layer.msg("已经是最后一页了");return false;}$("#pageNow").val(parseInt(pageNow)+1);$("#form").submit();})$("#btn").click("on",function(){$("#pageNow").val(1);$("#form").submit();})/* $("#selector option[value='男']").prop("selected", true); */})</script><script>$(document).ready(function() {$('#user-loading-btn').click(function() {simpleLoad($(this), true)});$("#user-add-btn").click(function() {window.location.href = "system_user_add.html";});$(".user-status-btn").click(function() {//获取两个自定义属性var user_id = $(this).attr("pk-id");var user_status = $(this).attr("user-status");console.log("用户主键:" + user_id + ",用户状态:" + user_status);var textArray = [ "激活", "禁用", "注销" ]layer.confirm('您确定要[' + textArray[user_status - 1] + ']操作吗?', {skin : 'layui-layer-molv', //样式类名btn : [ '确定继续', '取消' ], //按钮shade : 0.01, //显示遮罩shift : 6}, function() {//需要发送ajax请求$.get("result.json", {user_id : user_id,user_status : user_status}, function(data) {if (data.flag == "success") {window.location.reload();return false;} else {layer.msg('操作失败');return false;}})}, function() {});});$(".user-role-btn").click(function() {var user_id = $(this).attr("pk-id");layer.open({title : "系统用户设置角色",type : 2,area : [ '400px', '220px' ],fixed : false, //不固定shade : 0.01,content : 'system_user_role.html?user_id=' + user_id});});$(".user-photo-btn").click(function() {var user_id = $(this).attr("pk-id");layer.open({title : "系统用户头像",type : 2,area : [ '350px', '400px' ],fixed : false, //不固定shade : 0.01,content : 'system_user_photo.html?user_id=' + user_id});});});function simpleLoad(btn, state) {if (state) {btn.children().addClass('fa-spin');btn.contents().last().replaceWith(" Loading");window.location.reload();} else {setTimeout(function() {btn.children().removeClass('fa-spin');btn.contents().last().replaceWith(" Refresh");window.location.reload();}, 2000);}}</script></body>
</html>
</html>

10、注意事项
①开发工具用的eclipse,Version: 2019-06 (4.12.0)
②数据库用的mysql,Version:12.1.18
③前台用的模板,需要的自取,下载链接见附录
④没了,新手一枚,有不足之处还请大佬多多指教,愿大佬温柔待我

附录:Hplus官方完整版带文档 v.4.1.0
链接:https://pan.baidu.com/s/13666pH-QOgxGS4_PDu1btQ
提取码:znzo

SSM框架之数据分页,模糊查询相关推荐

  1. 毕设IDEA2019之ssm多表分页模糊查询(PageHelper插件)

    PageHelper插件实现分页查询请戳这. 本篇在分页的基础上实现模糊查询,因为单表有点简单,直接介绍多表,输入关键字查找相关内容,之前几篇有点脱离毕设项目了,这篇开始尽量用项目做例子.没什么好说的 ...

  2. 5.6-5.8工作记录2—分页模糊查询

    5.6-5.8工作记录2-改造ssh 前言 作战过程 5.7项目上篇--分页模糊查询 jsp ssm PK ssh 准备ssm 对比ssh: 工作bug记录 注意 打怪 查询以及分页 知识点 准备第二 ...

  3. php bootstrap 分页 查询,深入了解Bootstrap table表格插件(二)前后端分页模糊查询...

    这篇文章主要为大家分享了Bootstrap table学习笔记,前后端分页模糊查询,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在使用过程中,一边看文档一边做,遇到了一些困难的地方,在此记录一下 ...

  4. 新闻项目【分页模糊查询】

    今天要讲的是新闻页面的分页模糊查询.由上一个博客可知,新闻页面的分页:是先给页面绑定数据,再利用sql语句进行分页.而分页模糊查询就是再次基础上根据关键字查询相关数据.    String sql = ...

  5. 【JAVA技术库】分页模糊查询 进阶版

    先上效果图 cdsp_studentManager.jsp 主页面 <%@ taglib prefix="c" uri="http://java.sun.com/j ...

  6. Mybatis-Plus——分页+模糊查询

    建表: create table pms_brand (brand_id bigint not null auto_increment comment '品牌id',name char(50) com ...

  7. hibernate -- 分页模糊查询中setParameter 和setParameterList

    在分页模糊查询中碰到setParameter 和setParameterList这两个方法 setParameter 以前就只会用setParameter(int arg,String str),我用 ...

  8. java mongodb 模糊查询_Java操作MongoDB插入数据进行模糊查询与in查询功能的方法

    Java操作MongoDB插入数据进行模糊查询与in查询功能 由于需要用MongoDB缓存数据,所以自己写了一套公共的存放和读取方法 具体如下: 存放mongodb: /** * 公共方法:设置Obj ...

  9. SpringBoot Mybatis-Plus 分页模糊查询 分页参数和响应封装

    上一篇 SpringBoot集成Mysql.Mybatis.Mybatis-Plus,实现增删改查 一.前言 Mybatis-Plus封装了分页操作,简单配置一下就可以用.我这里还简单做了分页请求参数 ...

最新文章

  1. Error in install.packages : cannot remove prior installation of package
  2. 爱情,是我一生中最虔诚的信仰
  3. 后端Coder如何做好代码设计?
  4. 查询php 输出表格,php输出excel表格数据-PHP如何将查询出来的数据导出成excel表格(最好做......
  5. Java线程面试题TOP50
  6. java io .log_namenode无法启动:java.io.FileNotFoundException: .log (Permission denied)
  7. 网页素材大宝库:20套精美的清爽风格图标素材
  8. 要开始Ubuntu之旅拉~
  9. linux卸载驱动命令,简单的Linux驱动程序以及如何加载/卸载驱动
  10. 图神经网络的直推式(Transductive)学习与归纳(Inductive)学习
  11. 标书的参考格式及参考内容
  12. www.idcnd.net传媒官方客服提供
  13. android 拍照 对焦,在Android中设置相机对焦区域
  14. 手把手教大家实现一个电子签名
  15. Python也能识别图文,看到好的文章就用它一键扫描吧
  16. jquery下载所有版本(实时更新)
  17. photoshop中调整橡皮擦的像素大小
  18. c语言编写虚拟光驱软件下载,虚拟光驱(LZZ Virtual Drive)
  19. C/C++植物大战僵尸之CE找基址+修改器制作(基础版)
  20. Linux网络延迟排查方法

热门文章

  1. python常用写法
  2. Express-get和post
  3. Verilog语法+:的说明
  4. 融捷能源携手企企通,打造智能化、数字化采购平台
  5. 苹果邮箱怎么登录qq邮箱_qq邮箱app下载安装-手机QQ邮箱2020下载v6.1.0 官方安卓版...
  6. 按照账号定位持续发视频,数据不会太差!
  7. 没做好这些准备,千万不要婚前同居!!
  8. 推荐印度电影《起跑线》,让家长加入观影一点不为过
  9. 下载高清图片素材,就上这6个网站,免费还能商用
  10. C#——检测鼠标滑轮事件