精华内容
下载资源
问答
  • Java中mybatis分页查询的两个查询参数如何写?
    2020-05-03 21:27:34
    Map<String, Object> map = new HashedMap();
    map.put("pageStart", (当前页-1) * pageSize);
    map.put("pageEnd", pageSize);

    limit #{pageStart},#{pageEnd}

    更多相关内容
  • 使用这种通用的存储过程进行分页查询,想要防SQL注入,只能对输入的参数进行过滤,例如将一个单引号“’”转换成两个单引号“””,但这种做法是不安全的,厉害的黑客可以通过编码的方式绕过单引号的过滤,要想有效...
  • Mysql的分页的两个参数 select * from user limit 1,2 ... 您可能感兴趣的文章:详解MySQL的limit用法和分页查询语句的性能分析MYSQL分页limit速度太慢的优化方法mysql limit分页优化方法分享Mysql limit
  • jqgrid分页参数

    2015-12-28 16:31:44
    现在把找好的分页参数跟大家分享下
  • 代码生成器的分页查询一般都是这样: @RequestMapping("/list") public R list(@RequestParam Map<String, Object> params,@PathVariable Long catelogId){ PageUtils page = attrGroupService.queryPage...

    记录一下mp的分页插件使用:

    代码生成器的分页查询一般都是这样:

       @RequestMapping("/list")
        public R list(@RequestParam Map<String, Object> params,@PathVariable Long catelogId){
            PageUtils page = attrGroupService.queryPage(params);
    
            return R.ok().put("page", page);
        }
    

    由于今天写代码的时候给分页查询多加了一个参数,因此需要重新改一下根据这个catelogId进行查询:

        @RequestMapping("/list/{catelogId}")
        public R list(@RequestParam Map<String, Object> params,@PathVariable Long catelogId){
            PageUtils page = attrGroupService.queryPage(params,catelogId);
    
            return R.ok().put("page", page);
        }
    
    

    重写queryPage的实现:

     @Service("attrGroupService")
        public class AttrGroupServiceImpl extends ServiceImpl<AttrGroupDao, AttrGroupEntity> implements AttrGroupService {
        
        
            @Override
            public PageUtils queryPage(Map<String, Object> params, Long catelogId) {
                if (catelogId == 0) {
                    IPage<AttrGroupEntity> page = this.page(new Query<AttrGroupEntity>().getPage(params), new QueryWrapper<AttrGroupEntity>());
                    return new PageUtils(page);
                    //PageUtils 可以帮我们从Ipage里边自动解析出,总页码,当前页码,总数量等信息
                } else {
                    String key = (String) params.get("key"); //key为检索关键字
                    //select*from pms_attr_group where catelog_id=? and (attr_group_id=key or attr_group_name=key)
                    QueryWrapper<AttrGroupEntity> wrapper = new QueryWrapper<AttrGroupEntity>().eq("catelog_id", catelogId);
                    if (StringUtils.isNotEmpty(key)) {
                        wrapper.and((obj) -> {
                            obj.eq("attr_group_id", key).or().like("attr_group_name", key);
                        });
                    }
                    IPage<AttrGroupEntity> page = this.page(new Query<AttrGroupEntity>().getPage(params), wrapper);
                    return new PageUtils(page);
                }
            }
        }
    
    

    首先判断前端传过来的catelogId是否等于0,然后直接调用Ipage里的page方法进行查询:

     IPage<AttrGroupEntity> page = this.page(new Query<AttrGroupEntity>, new QueryWrapper<AttrGroupEntity>())
    

    page方法有两个参数:
    Params1:是前端传过来的分页信息
    在这里插入图片描述
    Params2:是一个QueryWrapper高级查询

    我们进第一个参数(Query)里边看一下封装的信息:
    在这里插入图片描述
    在这可以看到当我们前端传过分页的信息过来放到Map里,在调用getPage方法获取IPage,在这里也可以看到所需要的参数:curPage、limit、sidx(排序字段)、order(排序方式)

    将从前端传过来的参数通过调用this.page方法自动将这些参数封装成一个IPage对象,最终返回使用PageUtils

    return new PageUtils(page);
    

    来到PageUtils里边可以看到PageUtils可以帮我们从IPage里边自动解析出,总页码,当前页码,总数量等信息::
    在这里插入图片描述

    本人小白记录一下当天所遇见的问题,大佬勿喷,谢谢!

    展开全文
  • Spring Data 查询分页 -- 分页请求参数

    千次阅读 2018-11-04 12:02:45
    针对查询分页请求和分页结果的返回,Spring 提供了相应的建模...Pageable – 分页查询参数的接口抽象建模 Pageable接口是对分页查询参数的接口抽象建模,他主要包含以下三个基础信息: pageNumber – 当前页码,0...

    针对数据查询中的分页请求参数和分页结果返回,Spring 做了建模抽象并提供了相应的工具实现,这部分模型和工具包含在包spring-data-commons中,本文对其中分页请求参数部分做一下梳理,方便在开发中使用 。

    分页请求参数

    Pageable – 分页查询参数的建模

    Pageable是一个接口,用于建模分页请求参数,它主要包含以下三个基本信息:

    • pageNumber – 当前页码,0-表示第一页
    • pageSize – 页面尺寸,表示每页最多包含多少记录
    • sort – 排序参数:指定查询中对某些列是升序还是降序排列
    /**
     * Abstract interface for pagination information.
     * 分页信息的接口抽象,一般用于查询请求分页数据时封装分页有关的参数信息,
     * 具体实现由其他类完成,比如 PageRequest
     * 
     * @author Oliver Gierke
     */
    public interface Pageable {
    
    	/**
    	 * 返回目标查询结果页的页码,0表示第一页
    	 * 
    	 * @return the page to be returned.
    	 */
    	int getPageNumber();
    
    	/**
    	 * 返回目标查询结果页的页尺寸,必须大于0
    	 * 
    	 * @return the number of items of that page
    	 */
    	int getPageSize();
    
    	/**
    	 * 返回目标查询结果页中第一行在整个查询结果集中的索引,可以根据上面
    	 * 提到的属性 pageNumber, pageSize 计算得出 ,计算公式如下 :
    	 * offset = pageNumber * pageSize
    	 * 
    	 * @return the offset to be taken
    	 */
    	int getOffset();
    
    	/**
    	 * 返回排序参数.
    	 * 
    	 * @return
    	 */
    	Sort getSort();
    
    	/**
    	 * 根据当前 Pageable 对象,主要是 pageNumber, pageSize, sort 信息,构造并返回表示下一页的 Pageable 对象.
    	 * 
    	 * @return
    	 */
    	Pageable next();
    
    	/**
    	 * 根据当前 Pageable 对象,主要是 pageNumber, pageSize, sort 信息,构造并返回表示上一页或者第一页
    	 * 的 Pageable 对象.
    	 * 
    	 * @return
    	 */
    	Pageable previousOrFirst();
    
    	/**
    	 * 根据当前 Pageable 对象,主要是 pageNumber, pageSize, sort 信息,构造并返回表示第一页
    	 * 的 Pageable 对象.
    	 * 
    	 * @return
    	 */
    	Pageable first();
    
    	/**
    	 * 根据当前 Pageable 对象,主要是 pageNumber, pageSize 信息判断是否还有上一页,判断方法 :
    	 * 1. 如果 pageNumber == 0 , 表示当前已经是第一页,所以没有上一页,因此返回 false;
    	 * 2. 如果 pageNumber >0, 表示当前不在第一页,所以存在上一页,因此返回 true。
    	 * 
    	 * @return
    	 */
    	boolean hasPrevious();
    }
    

    Pageable仅仅是建模分页请求参数的接口,我们不可能直接创建其对象,而构造一个Pageable对象的方式是通过其实现类PageRequest,本文后面会介绍PageRequest如何使用。

    Sort – 排序参数:指定查询中某些列的升降序排列

    查询中经常涉及到对某一个列或者某几个列的排序问题,对这些列如何进行排序,Spring通过类Sort进行抽象。你可以把 Sort理解成类似这样一个结构 :

    [[createTime:desc],[name:asc],[birthdate:asc]]
    

    上面例子中的每一个类似[createTime:desc]的对儿叫做一个Order 排序。一个Order排序指出了针对某个属性/列做升序/降序排列。

    通过这样一个结构化的参数对象,查询就可以理解请求者想对哪些列进行怎样的排序了。下面我们看一下Sort类源代码中有关的部分:

    package org.springframework.data.domain;
    
    
    /**
     * 查询的排序参数。必须针对一个或者多个属性(也就是列)指定其如何排序。这些属性/列不能指定为null。
     * Sort 同时定义了一个缺省的列排序方式:升序 ASC 。
     */
    public class Sort implements Iterable<org.springframework.data.domain.Sort.Order>, Serializable {
    
    	public static final Direction DEFAULT_DIRECTION = Direction.ASC;
    	// 保存各个排序列及其排序参数,一个 Order 相当于一个 [列,列排序方式] 对,例子 : [createTime, ASC]
    	private final List<Order> orders;
    
    	/**
    	 * 基于一组提供的 Order 对象创建一个 Sort 对象,
    	 * @param orders 不允许是 null,也不能一个元素也没有,也不能某些元素为null
    	 */
    	public Sort(Order... orders) {
    		this(Arrays.asList(orders));
    	}
    
    	/**
    	 *  基于一组提供的 Order 对象创建一个 Sort 对象,
    	 *  跟 Sort(Order... orders) 目的一样,区别在于参数传递的方式
    	 * 
    	 * @param orders 不允许是 null,也不能一个元素也没有,也不能某些元素为null .
    	 */
    	public Sort(List<Order> orders) {
    
    		if (null == orders || orders.isEmpty()) {
    			throw new IllegalArgumentException(
    				"You have to provide at least one sort property to sort by!");
    		}
    
    		this.orders = orders;
    	}
    
    	/**
    	 * 通过一组属性/列名称定义一个Sort对象,对所有属性/列使用Sort的默认排序方式。
    	 * 实际上是针对每个传入的属性/列应用Sort默认排序方式创建了一个Order对象。
    	 * 
    	 * @param properties 不能为 null,不能包含 null,也不能包含长度为0的字符串
    	 */
    	public Sort(String... properties) {
    		this(DEFAULT_DIRECTION, properties);
    	}
    
    	/**
    	 * 通过一组属性/列名称定义一个Sort对象,对所有属性/列使用Sort的默认排序方式。
    	 * 实际上是针对每个传入的属性/列应用Sort默认排序方式创建了一个Order对象。
    	 * 
    	 * @param direction defaults to {@linke Sort#DEFAULT_DIRECTION} (for {@literal null} cases, too)
    	 * @param properties 不能为 null,不能包含 null,也不能包含长度为0的字符串
    	 */
    	public Sort(Direction direction, String... properties) {
    		this(direction, properties == null ? new ArrayList<String>() : Arrays.asList(properties));
    	}
    
    	/**
    	 * 跟 Sort(Direction direction, String... properties) 目的一样,区别在于属性/列参数传递的方式
    	 */
    	public Sort(Direction direction, List<String> properties) {
    
    		if (properties == null || properties.isEmpty()) {
    			throw new IllegalArgumentException(
    				"You have to provide at least one property to sort by!");
    		}
    
    		this.orders = new ArrayList<Order>(properties.size());
    
    		for (String property : properties) {
    			this.orders.add(new Order(direction, property));
    		}
    	}
    
    	/**
    	 * 合并两个 Sort,这里你可以把一个 Sort 理解成 Order 的一个集合,合并两个 Sort,就是
    	 * 合并两个 Order集合
    	 * 
    	 * @param sort 可以为空 null.
    	 * @return 参数 sort 为空时返回当前 Sort 对象, 否则返回当前 Sort 对象和参数 sort 对象合集的
    	 * 	另外一个 Sort 对象
    	 */
    	public Sort and(Sort sort) {
    
    		if (sort == null) {
    			return this;
    		}
    
    		ArrayList<Order> these = new ArrayList<Order>(this.orders);
    
    		for (Order order : sort) {
    			these.add(order);
    		}
    
    		return new Sort(these);
    	}
    
    	/**
    	 * 获取某个指定属性/列的Order排序
    	 * 
    	 * @param property
    	 * @return 如果指定的属性/列没有被当前Sort对象包含,返回null,否则返回相应的 Order 对象
    	 */
    	public Order getOrderFor(String property) {
    
    		for (Order order : this) {
    			if (order.getProperty().equals(property)) {
    				return order;
    			}
    		}
    
    		return null;
    	}
    
    
    	/*
    	 * 两个 Sort 相等判断的方法 :
    	 * 1. 同一个对象视为相等;
    	 * 2. 两个对象有一个不是 Sort 类型,视为不相等;
    	 * 3. 两个 Sort类型的对象,如果所包含的 Order 集合相等,则视为两个 Sort对象相等。
    	 */
    	@Override
    	public boolean equals(Object obj) {
    
    		if (this == obj) {
    			return true;
    		}
    
    		if (!(obj instanceof Sort)) {
    			return false;
    		}
    
    		Sort that = (Sort) obj;
    
    		return this.orders.equals(that.orders);
    	}
    }	
    

    Sort.Order

    Order是一个在类Sort内静态定义的一个类,因此这里简单地将其称为Sort.Order

    Sort.Order 可以简单的被理解成一个二元组 [列,列排序方式(Direction)]。一个Sort对象其实是一个Order对象的集合。

    Sort.Direction – 枚举定义某个列的排序方式:升序/降序

    Direction是在类Sort内静态定义的一个枚举类型,因此这里简单地将其成为Sort.Direction,这个枚举定义了某个列的排序方式是升序ASC还是降序DESCSort.Direction主要是给Sort用来指定某个列的排序方式的。Sort.Direction同时提供了从字符串到枚举类型Sort.Direction的转换,转换过程是大小写不敏感的,比如ASC,asc,ASc都表示升序。

    PageRequestPageable的基础实现

    Pageable接口仅仅是对分页请求参数的抽象,SpringPageable接口提供了一个基础实现类PageRequest,当我们需要对一个查询指明如何进行分页时,通常使用类PageRequest来创建相应的分页请求参数对象。

    PageRequest实现了接口Pageable所定义的语义,不同的是,PageRequest提供了构造Pageable对象的方法。以spring-data-commons-1.13.14为例,PageRequest提供了如下三个构造函数 :

    • PageRequest(int page, int size)
      根据页码page和页大小size构造分页请求参数对象,不指定列排序

    • PageRequest(int page, int size, Direction direction, String... properties)
      根据页码page,页大小size,由 direction,properties定义的Sort列排序参数构造分页请求参数对象

    • PageRequest(int page, int size, Sort sort)
      根据页码page,页大小sizesort列排序参数构造分页请求参数对象

    如何使用 PageRequest/Pageable ?

    举个例子来看如何使用PageRequest/Pageable:

    	// 这是一个Spring MVC控制类的一部分代码
    	
    	// 依赖注入订单服务
    	@Autowired
    	OrderService orderService;
        /**
         * 一个Spring MVC控制器方法,分页查询订单
         *
         * @param pageNo 页码
         * @param pageSize 页面大小
         * @return
         */
        @RequestMapping(value = "/page", method = RequestMethod.POST)
        public Object pageOrders(@RequestParam(value = "pageNo") int pageNo,
                                 @RequestParam(value = "pageSize") int pageSize) {
            // 注意:这里使用客户端传入的页码和页尺寸创建了对象 PageRequest, 也是一个 Pageable 对象                     
            Page<Order> page = orderService.pageOrders(new PageRequest(pageNo, pageSize));     
            return page;
        }
    

    OrderService.pageOrders()服务方法定义如下:

    	// OrderService服务逻辑实现类的一部分代码
    
        /**
         * 分页查询订单
         * @param pageable 分页参数
         * @return
         */
         // 注意这里参数pageable的类型使用Pageable即可,不必要使用PageRequest
        public Page<Order> pageOrders(Pageable pageable) {
            // 省略具体实现
            // ...
        }
    

    相关文章

    Spring Data 查询分页 – 分页结果返回

    展开全文
  • 下面小编就为大家带来一篇Java分页查询--分页显示(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 10. Spring Boot 中的分页查询

    千次阅读 2021-01-15 01:59:30
    在Spring Boot中使用分页查询主要依赖了org.springframework.data.domain...该注解指明了分页参数的默认值。另一种则是,可以通过URL等传入的信息进行分页信息的设置。在常用的项目中,分页信息肯定是可以传入的,因...

    在Spring Boot中使用分页查询主要依赖了org.springframework.data.domain.*包下面的及格分页类的功能。使用分页查询常见有两种方式,一种是直接在程序中写死分页的参数(页数,每页大小等),需要依赖@PageableDefault注解。该注解指明了分页参数的默认值。另一种则是,可以通过URL等传入的信息进行分页信息的设置。

    在常用的项目中,分页信息肯定是可以传入的,因此,只讨论如何根据传入的分页信息来实现分页查询。

    1. Repository层加入分页支持

    依然以配置了JPA操作的Spring Boot项目为例,要实现分页,需要在原有的架构上进行一定的改造。

    首先就是在DAO层本身要支持分页参数。由于Spring中jpa的简化性,只需要添加如下类似的声明,即表示可以通过DAO层支持分页访问数据库了。

    Page findAll(Pageable pageable);

    2. 服务层提供对该接口的访问

    做一个简单的封装即可,例如:

    /**根据传入的分页参数,查询指定分页内的用户列表*/

    public Page getAllSysUserInfoByPageable(Pageable pageable){

    return sysUserInfoRepository.findAll(pageable);

    }

    3. Controller层创建分页对象来访问

    底层的分页支持都已经提供好了,只需要在Controller层根据用户传入的参数来创建一个分页请求对象,就可以实现分页查询了。

    第一步: 设置分页后的结果排序方案对象。

    第二步: 根据排序方案对象和传入的参数实例化一个Pageable对象,用于分页的大小、页面数和排序方案。

    第三步: 使用该分页对象

    一个简单的示例如下:

    /**实现分页查询的方法*/

    @GetMapping("/page/{pageId}/size/{sizeId}")

    public List getAllSysUserInfoListByPage(@PathVariable("pageId") int pageId, @PathVariable("sizeId") int size) {

    Sort sort = new Sort(Sort.Direction.ASC, "userId");

    Pageable pageable = new PageRequest(pageId, size, sort);

    Page pageContent = sysUserInfoService.getAllSysUserInfoByPageable(pageable);

    return pageContent.getContent();

    }

    Pageable是一个接口,用于接收分页请求(PageRequet)对象。

    分页参数pageId是默认从 0 开始计数的。

    展开全文
  • 今天小编就为大家分享一篇Laravel实现搜索的时候分页并携带参数,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • access下 模糊查询方法,值得大家参考学习。
  • 使用MySQL实现分页查询

    千次阅读 多人点赞 2020-05-21 01:16:55
    本文关键字:MySQL、分页查询、真分页、假分页、LIMIT。在项目开发当中,经常要实现分页功能,在面试时也会经常被问到:什么是分页。这是因为在一个页面上能够显示的数据是有限的,而存放在数据库中的数据往往很多,...
  • 但是分页参数每次都要作为参数从页面传到controller,又从controller传到service,这样是不是很麻烦,我这里提供一种简单的封装,使我们免于频繁传递分页参数的麻烦。下面开始直接上代码: 1、首先是确定我们在dao...
  • 最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习….. (一)、mysql的分页查询 mysql的分页查询是最简单的,借助关键字limit即可实现查询查询语句通式: ...
  •  最近的学习过程中,使用ASP.NET MVC配合Layui框架进行开发时,根据Layui Page传回的参数要进行分页操作(虽然EntityFramework提供了非常便捷的分页方法,但是SQL什么时候都不能忘掉吧O(∩_∩)O哈哈~)。索性对于分页SQL...
  • 查询条件VO /** * @className: TeacherQueryVo * @description: 讲师查询条件封装 * @date: 2020/11/18 * @author: cakin */ @ApiModel("Teacher查询对象") @Data public class TeacherQueryVo implements ...
  • MyBatis Plus 的多表联接、分页查询实现方法 ...多表关联、分页查询接口 ...多表关联、分页参数查询接口 http://localhost/common/getAllQuestionWithStudentByPage/1/10/admin
  • java分页参数需求

    千次阅读 2018-07-09 10:07:11
       需要用到的参数:      pageSize 每页显示多少条数据 pageNumber 页数,从客户端传来      totalRecouds 表中的总记录数 (select count(*) from 表名) ...
  • django在分页查询的时候,翻页时,v层要传递查询参数,相应的html翻页连接也要带上查询参数 直接上代码 view: @login_required def search_name(request): username = request.session.get('user') search_...
  • bootStrap table 分页处理,前端代码参数的详细设置与返回数据的处理,表格渲染操作。 包括页面的查询条件如何转成json 格式,提交到后台的操作。设置列表第一列为复选框的操作。 禁止分页条上一页,下一页的点击...
  • thinkphp5.0中分页后传递查询参数

    千次阅读 2017-09-07 17:57:06
    思路:表单中用get方式提交数据,后台中获取到参数,在paginage()方法中传递参数。 代码示例: 1.定义两个数组,一个用来分页传递参数,一个用于查询记录总数。 2.接收参数: 3.查询
  • 问题:怎么传递查询参数?怎么翻页的时候,查询文本框保存输入查询条件? ``` <form action="upload/search/<%=0%>" > ``` ``` ${pageContext.request.contextPath}/upload/search/<%=pagenow %>"> ```
  • 1、如上大字所示,默认分页查询 触发的查询携带的参数如下(均为初始化表格定义的) bootstrap-tableAPI  pageSize,sortOrder,sortName,sortOrder (服务器分页模式) 2、若想要使用自定义查询,可以通过 $....
  • 在使用MyBatisPlus分页插件,列表展示数据,翻页后,加入查询条件,显示为空。 例如学生列表,10页记录,在翻到第5页时候,需要输入“张三”按照姓名查询,提交查询后,显示空。 分析后,前端传入的查询分页条件带...
  • Layui数据表格分页参数详解

    千次阅读 2019-10-23 18:16:05
    Layui超实用10篇技术解决方案:https://blog.csdn.net/libusi001/article/details/100065911 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 参数释义: table.render({ elem: '#test' , url: ctxPath + 'jarI...
  • Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便。 使用MyBatis中的RowBounds进行分页查询时,不需要在 sql 语句中写 offset,limit...
  • 地址:https://www.cnblogs.com/xianz666/archive/2004/01/13/14034057.html https://blog.csdn.net/l1006841574/article/details/99670600 xml,需要对查询条件做非空判断,最好用这个 ...select * from test ...
  • es深度分页查询

    千次阅读 2018-12-17 17:26:00
    接到了一个比较恶心的需求,需要对es进行分页查询,单次查询一万条,最多需要查询十次。当时也没想太多,需求评审时并没有及时反驳,既然掉坑里了,那就想办法爬出来吧! es的分页 1)from+size浅分页 我们当时...
  • mysql高级查询~分页查询
  • Neo4j模糊查询分页查询

    千次阅读 2018-04-23 12:06:47
    Neo4j模糊查询:采用正则方式;MATCH (n:House) where n.Name =~ '李.*' RETURN n 分页:使用skip 及 limitMATCH (n:House) where n.Name =~ '李.*' RETURN n skip 1 limit 1

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 275,409
精华内容 110,163
关键字:

分页查询参数