mybaties分页

首先引入jar包:

     <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
    </dependency>

然后在mybatis配置文件中配置:

SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <plugins>
        <!-- com.github.pagehelper 为 PageHelper 类所在包名 -->
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL 六种数据库-->
            <property name="dialect" value="mysql"/>
        </plugin>
    </plugins>
</configuration>

代码中使用:

Service

package com.pinyougou.sellergoods.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.pinyougou.mapper.TbBrandMapper;
import com.pinyougou.pojo.TbBrand;
import com.pinyougou.sellergoods.service.BrandService;

import entity.PageResult;

@Service
public class BrandServiceImpl implements BrandService {

    @Autowired
    private TbBrandMapper brandMapper;

    @Override
    public PageResult findPage(int pageNum, int pageSize) {
        //声明下面的查询要使用分页插件
        PageHelper.startPage(pageNum, pageSize);
        //查询方法一:直接将查询结果强转成 page对象
        Page<TbBrand> page = (Page<TbBrand>) brandMapper.selectByExample(null);
        return new PageResult(page.getTotal(), page.getResult()); 

        //查询方法二:将查询结果封装成pageInfo对象
//        List<TbBrand> list = brandMapper.selectByExample(null);
//        PageInfo<TbBrand> pageInfo = new PageInfo<>(list);
//        return new PageResult(pageInfo.getTotal(), pageInfo.getList());
    }

}

Controller:

package com.pinyougou.manager.controller;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.dubbo.config.annotation.Reference;
import com.pinyougou.pojo.TbBrand;
import com.pinyougou.sellergoods.service.BrandService;

import entity.PageResult;

@RestController
@RequestMapping("/brand")
public class BrandController {

    @Reference
    private BrandService brandService;

    /**
     *<p>Description: 分页查询<p>
     * @date 2018年11月19日
     * @param page 当前页码
     * @param size    每页记录条数
     * @return
     */
    @RequestMapping("/findPage")
    public PageResult findPage(int page,int size) {
        return brandService.findPage(page,size);
    }

测试:

原文地址:https://www.cnblogs.com/libin6505/p/9983222.html

时间: 2024-10-03 22:38:55

mybaties分页的相关文章

mybaties分页+自定义前台

1 Springmvc+mybaties 2 3 JSP: 4 <!--右侧区域start--> 5 <td width="100%" class="ver01" > 6 <div class="box2" panelTitle="查询" showStatus="false" id="chaxundiv"> 7 <form action=&quo

mybaties的批量增删改查及普通增删改查

数据库: create table school(     id int(11) not null auto_increment comment '主键',     name varchar(20) comment '学校名称',     address varchar(100) comment '学校地址',     create_time datatime comment '数据上传时间',     primary key (id) ) 实体类: package com.test.entit

ssm中逆向工程与分页的应用

昨天对springboot中的mybatis逆向工程与分页应用进行了整理,今天对ssm项目中的逆向工程与分页进行整理. 项目运行环境:eclipse+jdk1.8+maven+tomcat 搭建ssm项目 首先新建maven project,项目Archetype选择:maven-archetype-webapp,项目新建完毕,会出现生成的index.jsp报错. 造成原因:项目没有依赖javax.servlet相关类包,这些类包在tomcat类库中 有两种解决方案: 方法一:添加依赖 <dep

java 动态代理—— Mybaties 拦截器链基本原理实现

1.摘要 Mybaties 中有个分页插件,之前有特意的去了解了一下原理 :https://www.cnblogs.com/jonrain0625/p/11168247.html,从了解中得知分页插件是基于Mybaties的拦截器去实现的,这个插件就是一个拦截器,和别的拦截器组成了Mybaties的拦截器链,然后所有的拦截器都对Executor 这个类 做了动态代理.本次主要的再次去学习下这个动态代理,去实现一个最基本的拦截器链的效果.当然还有spring aop 等很多地方都是基于动态代理去实

PageHelperi分页 limit ?,? limit ?

仅仅针对Mybaties PageHelperi分页,报错如下: select * fr0m  user limit ?,? limit ? Caused by: com.alibaba.druid.sql.parser.ParserException: syntax error, error in :’limi1 1 limit ?,?’,expect LIMIT, actual LIMIT limit 原始查询sql(select * from t limit 1)后面有limit1,结果报

python__Django 分页

自定义分页的类: #!/usr/bin/env python # -*- coding: utf-8 -*- # Created by Mona on 2017/9/20 from django.utils.safestring import mark_safe class Paginator: ''' 页码的格式依赖于bootstrap: 使用案例: from django.shortcuts import render,redirect,HttpResponse from app01.mod

ajax+分页

<!DOCTYPE html><html><head lang="zh-cn"><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><meta http-equiv="X-UA-Compat

使用插件bootstrap-table实现表格记录的查询、分页、排序等处理

在业务系统开发中,对表格记录的查询.分页.排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这个bootstrap-table是一款非常有名的开源表格插件,在很多项目中广泛的应用.Bootstrap-table插件提供了非常丰富的属性设置,可以实现查询.分页.排序.复选框.设置显示列.Card view视图.主从表显示.合并列.国际化处理等处理功能,而且该插件同时也提供了一些不错的扩展功能,如移动行.移动列位置等一些特殊的功能,插件可

优化LIMIT分页

在系统中需要分页的操作通常会使用limit加上偏移量的方法实现,同时加上合适的order by 子句.如果有对应的索引,通常效率会不错,否则MySQL需要做大量的文件排序操作. 一个非常令人头疼问题就是当偏移量非常大的时候,例如可能是limit 10000,20这样的查询,这是mysql需要查询10020条然后只返回最后20条,前面的10000条记录都将被舍弃,这样的代价很高.如果所有的页面被访问的频率相同,那么这样的查询平均需要访问半个表的数据.要优化这样的查询,要么实在页面中限制分页的数量,