分页加模糊查询

基于Spring+springmvc+spring data jpa+jquery框架

  一,首先,我们先来看下后台.

     我这里是根据经理登录来查看自己对应的客户,所以传递了4个值  页面大小,当前页 , 经理ID,和模糊查询的数据 ,首先看下Service

        currentPage = currentPage == null ? 1 : currentPage;        

        pageSize = pageSize == null ? 10 : pageSize

      return dao.findLike(adminId,search,currentPage,pageSize);

      在这里判断页面大小和当前页  dao层

      public PageModel findLike(Integer adminId, String search, Integer currentPage, Integer pageSize) {  
            StringBuffer hql = new StringBuffer("from Customer where enbleflag=0");
              if (adminId != null) {
          hql.append(" and userid=").append(adminId);
       }
     if (StringUtils.isNotEmpty(search)) {
        hql.append(" and (name like ‘%").append(search).append("%‘");
        hql.append("or phone like ‘%").append(search).append("%‘)");
    }
     PageModel page = queryForPage(hql.toString(), currentPage, pageSize);
      return page;
    }

这里调用了 一个封装好的方法 queryForPage(hql.toString(), currentPage, pageSize)

  @SuppressWarnings({"rawtypes", "unchecked"})
  public PageModel queryForPage(String hql, int currentPage, int pageSize) {
  PageModel page = new PageModel();
  List list = null;
  Integer totalCount = 0;
  Integer totalPage = 0; //总页数
  try {
  int firstResult = (currentPage - 1) * pageSize;
  Query query = em.createQuery(hql);
  query.setMaxResults(pageSize);
  query.setFirstResult(firstResult);
  list = query.getResultList();

  Query query2 = em.createQuery(hql);
  List list2 = query2.getResultList();
  totalCount = (list2 == null) ? 0 : list2.size();
  if (totalCount % pageSize == 0) {
  totalPage = totalCount / pageSize;
  } else {
  totalPage = totalCount / pageSize + 1;
  }

  page.setCurrentPage(currentPage);
  page.setList(list);
  page.setPageSize(pageSize);
  page.setTotalCount(totalCount);
  page.setTotalPage(totalPage);
  } catch (Exception e) {
  e.printStackTrace();
  } finally {
  em.close();
  }
  return page;
  }

还要导入一个PageModel 模型

  public class PageModel<E> implements Serializable {

  private static final long serialVersionUID = 3265524976080127173L;

  private int totalCount; //总记录数

  private int pageSize = 10; //每页显示的数量

  private int totalPage; //总页数

  private int currentPage = 1; //当前页数

  private List<E> list; //分页集合列表

  private String url; //分页跳转的URL

  还有set get 方法 在此就不写了

二,接下来看下jsp页面

  <form id="searchForm">

  <input type="text" name="search" id="search">

  <input type="hidden" id="currentPage" name="currentPage" value="1">
  <input type="hidden" id="adminId" name="adminId" value="1">
  </form> 模糊查询的表单

  <tbody id="customerarea">

  </tbody>

  </table>
  </div>
  <script type="text/html" id="customer">
  {{if list && list.length > 0}}
  {{each list as value index}}
  <tr>
    <td>{{(currentPage-1)*10+index+1}}</td>
    <td >{{value.name?value.name:‘--‘}}</td>
    <td>{{value.sex ==0?‘男‘:‘女‘}}</td>
    <td>{{value.phone?value.phone:‘--‘}}</td>
    <td >{{value.company?value.conpany:‘--‘}}</td>
    <td>{{value.department?value.department:‘--‘}}</td>
    <td>{{value.job?value.job:‘--‘}}</td>
    <td><a href="${ctx}/jx/kclb/page/toeditkc?id={{value.id}}" >编辑</a>
        <a href="javascript:;" id="{{value.id}}">查看详情</a>    
      </td>
   </tr>
  {{/each}}
  {{else}}
  <tr>
  <td colspan="8">暂无数据</td>
  </tr>
  {{/if}}</script>

  <div id="demo"></div>
  </div>

  这里用的ajax渲染

  function getCustomer(cur) {
  var currentPage=$(‘#currentPage‘).val(cur || 1);//分页
  var url="${pageContext.request.contextPath }/meeting/findcustomer";
  var search = $("#search").val();
  var data=$(‘#searchForm‘).serialize();
  $.ajax({
    type:"GET",
    url : url,
    data : data,
    dataType : ‘JSON‘,  
    success: function (result) {
    if (result.success) {
      console.log(result);
      $(‘#customerarea‘).html(template(‘customer‘, result.data));
      if (result.data.totalCount > 0) {
    laypage({
        cont: ‘demo‘, //容器。值支持id名、原生dom对象,jquery对象。【如该容器为】:<div id="page1"></div>
        pages: result.data.totalPage, //通过后台拿到的总页数
        curr: result.data.currentPage || 1, //当前页
        skin: ‘#1978fe‘,
        jump: function (obj, first) { //触发分页后的回调
        console.log(obj.curr);
      if (!first) { //点击跳页触发函数自身,并传递当前页:obj.curr
        getCustomer(obj.curr);
          }
          }
      });
    }else{
      $(‘#demo‘).html(‘‘);
    }
    } else {
      $(‘#customerarea‘).html(template(‘customer‘, result.data));
  layer.msg(result.msg);
  }
}
})
}

$(function () {
$("#search").change(function () {
getCustomer();
})
})

原文地址:https://www.cnblogs.com/gudeyeyu/p/9070779.html

时间: 2024-11-08 03:28:05

分页加模糊查询的相关文章

关于分页加模糊查询的存储过程

select [Uid],[Usname],[Uname],[Urole],[Upicture] from Us create proc Upage(@pageindex int,  ---当前页@pagesize int,   ---显示几条@pagecount int out,    ---总条数@name varchar(50)   ---查询名称参数)as---判断有没有查询的参数if(@name is null)begin ---查询总记录数 select @pagecount=COU

基于HTML5 Bootstrap搭建的后台模板,分页,模糊查询已经全部JS实现,无需编码,嵌入数据即可开发,内置8款皮肤,欧美风格,非常好用!

原文:基于HTML5 Bootstrap搭建的后台模板,分页,模糊查询已经全部JS实现,无需编码,嵌入数据即可开发,内置8款皮肤,欧美风格,非常好用! 源代码下载地址:http://www.zuidaima.com/share/1550463575788544.htm 分页,查询功能已经全部用JS实现,无需再做此类代码编写,嵌入数据即可,真心美观好用.       

mysql笔记十——数据库分页技术(再分页,模糊查询)

1.什么是数据分页:数据分页就是将很多条记录像书本一样分页,每页显示多少行记录: 2.为什么要数据分页:当我们进行sql语句查询时,假如数据有成千上万行记录,如果在同一个页面去显示,那这个页面得有多大,数据就要很多,而我们所需的记录又很少,不使用分页,查看起来那么繁琐,而且一不小心容易看着眼花.使用数据分页,就行书本一样,有页数,一目了然.相当简洁. 3.核心sql语句:SELECT * FROM stud LIMIT m,n ----m表示要显示的页数,n表示显示的记录行数 4.核心思想: 总

2017-5-25 分页加条件查询合体

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server&quo

前端过滤加模糊查询

1 function gainSearch (payload) { //payload 为查询关键字 2 const list = window.gainList // window.gainList 为一个对象数组 object[] 3 let arr = [] 4 list.filter((index) => { // 过滤每一条数据对象 5 if (index.value1.indexOf(payload) >= 0) { // 每条数据对象的第一个值进行模糊搜索,多个可采用 || 6

Springmvc+Myabtis+Ajax实现异步分页emp+dept(全部查询及模糊查询)

1.在项目中创建如下目录 2.创建实体类Dept package com.entity; import java.io.Serializable; /** * 部门表 * @author Administrator * */ public class Dept implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private Integer deptno; private Stri

模糊查询,分页,序列

关于模糊查询, 被查询的字符串不能是  双引号 引起来的.只能是 单引号,否则会不执行的. Select * from emp where name like '%A%' 这里面 是区分 单双引号的.在执行模糊查询的时候不能使用 单引号. 关于 oracle 数据库,查询的语句不区分大小写,也就是不管大小写都可以识别的.但是对于查询的内容来讲,如果是大写 就是 大写,如果是小写的话,就是小写了. Orcl里面 and的 优先级 要高于 or 所以 下面两句话的执行结果 是不相同的. 全角符号查出

2016/3/13 七种查询 (普通查询 条件查询 排序查询 模糊查询 统计查询 分组查询 分页查询 )

一句话概括的话,SQL作为结构化查询语言,是标准的关系型数据库通用的标准语言: T-SQL 是在SQL基础上扩展的SQL Server中使用的语言 1,普通查询 #查询Info表中的所有列 select * from Info #查询Info表中的Name和Code列 select Name,Code from Info 2,条件查询 关键字where #查询Info表的左右列 限定范围 列名为p001 select * from Info where 列名="p001" #查询条件之

MyBatis做动态模糊查询时,like后面要不要加单引号??

做项目遇到了个奇怪的问题,项目里面要对商品.账户.进行分别的多条件查询,于是我就采用动态多条件分页查询,起初在做账户部分的时候Mybatis是这样写的 <!-- 动态多条件分页查询 --> <select id="searchPageUseDyc" parameterType="page" resultMap="accountResultMap"> select acc_id,acc_login,acc_name,acc_