Mybatis分页插件-PageHelper的使用

Mybatis分页插件-PageHelper的使用Mybatis分页插件-PageHelper的使用怎样配置mybatis这里就不提了,我来说说我配置这个分页插件的过程吧。下载JAR包分页插件pagehelper.jar:https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/http://repo1.maven.org/ma

大家好,又见面了,我是你们的朋友全栈君。

#Mybatis分页插件-PageHelper的使用

怎样配置mybatis这里就不提了,我来说说我配置这个分页插件的过程吧。

下载JAR包

分页插件pagehelper.jar:

https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/
http://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/
由于使用了sql解析工具,你还需要下载jsqlparser.jar

4.1.0及以后版本需要0.9.4版本

http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.4/
4.1.0以前版本需要0.9.1版本

http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.1/

一、首先,在spring-mybatis.xml中是这样配置:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="mapperLocations" value="classpath:com/sinyat/api/weather/mapping/*.xml" />
		<property name="typeAliasesPackage" value="com.sinyat.api.weather.model" />
		<property name="plugins">
			<array>
				<bean class="com.github.pagehelper.PageHelper">
					<property name="properties">
						<value>
							dialect=mysql
						</value>
					</property>
				</bean>
			</array>
		</property>
	</bean>

我是在spring里配置的,还可以在mybatis-config.xml里配置,有兴趣的话可以百度下。

二、需要分页,自然就还要一个查询了。用了PageHelper之后,查询语句就可以很简单了。

<select id="selectAll" resultMap="BaseResultMap">
  	select
  	<include refid="Base_Column_List" />
  	from citylist
  </select>

这是我的查询语句,查询城市列表。没有其他条件,就是查所有。当然,我这只是一个小的demo,没做那么麻烦,真正的使用,是需要条件查询的。
现在来讲讲用了PageHelper之后的好处:
那就是查询语句可以不用limit,但是就一点好处吗?自然不是。请接着往下看。

三、接口、实现类我就不再贴代码了,该怎么写还是怎么写,不需要传分页参数。然后是Controller:

@RequestMapping("showcity")
	public ModelAndView showCityList(ModelAndView mv,
			@RequestParam(required=true,defaultValue="1") Integer page,
			@RequestParam(required=false,defaultValue="10") Integer pageSize){
		
		PageHelper.startPage(page, pageSize);
		List<CityList> list = cityListService.selectAll();
		
		PageInfo<CityList> p=new PageInfo<CityList>(list);
		//System.out.println(p.getList());
		
		mv.addObject("citylist", list);
		mv.addObject("page", p);
		mv.setViewName("weather/showCityList");
		
		return mv;
	}

可以看到,方法里有两个参数,前面也说了,这是一个demo,仅仅只是一个非常简单的分页效果。

PageHelper.startPage(page, pageSize);

这段代码表示,程序开始分页了,page默认值是1,pageSize默认是10,意思是从第1页开始,每页显示10条记录。

PageInfo这个类是插件里的类,这个类里面的属性还是值得看一看:

	//当前页
    private int pageNum;
    //每页的数量
    private int pageSize;
    //当前页的数量
    private int size;
    //排序
    private String orderBy;

    //由于startRow和endRow不常用,这里说个具体的用法
    //可以在页面中"显示startRow到endRow 共size条数据"

    //当前页面第一个元素在数据库中的行号
    private int startRow;
    //当前页面最后一个元素在数据库中的行号
    private int endRow;
    //总记录数
    private long total;
    //总页数
    private int pages;
    //结果集
    private List<T> list;

    //第一页
    private int firstPage;
    //前一页
    private int prePage;
    //下一页
    private int nextPage;
    //最后一页
    private int lastPage;

    //是否为第一页
    private boolean isFirstPage = false;
    //是否为最后一页
    private boolean isLastPage = false;
    //是否有前一页
    private boolean hasPreviousPage = false;
    //是否有下一页
    private boolean hasNextPage = false;
    //导航页码数
    private int navigatePages;
    //所有导航页号
    private int[] navigatepageNums;

使用PageInfo这个类,你需要将查询出来的list放进去:

PageInfo<CityList> p=new PageInfo<CityList>(list);

然后mv.addObject("page", p);
这样在页面中就可以通过${page.nextPage}翻到下一页,
${page.prePage}翻到上一页,
列表

下面这个是因为我没有进行判断,所以,第0页自然是什么都没有的。
这里写图片描述
判断的话,在PageInfo里有对应的属性,比如:

	//是否有前一页
    private boolean hasPreviousPage = false;
    //是否有下一页
    private boolean hasNextPage = false;

好了,demo就是这些了。

下一个是通用Mapper,据说也是很不错的东西。

在这里插入图片描述

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143077.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 浮雕建模软件_自建房设计软件

    浮雕建模软件_自建房设计软件vectricaspire10是一款非常专业的3d浮雕模型设计软件,为CNC铣床上创建和切割零件提供了强大直观的解决方案,凭借其独特的3D组件建模、完善的2D设计、编辑工具集让你可以轻松使用现有2D数据或导入的3D模型,甚至能够从头开始创建自己的2D和3D零件。而且可以将几何体捕捉到不作为几何体存在的直线,延伸和交叉点,从而减少对大多数构造矢量的需求,还具有一整套完善的绘图工具,允许你通过在创建几何体时允许键入值来更轻松地为形状创建和编辑过程添加更多精度,让你能够更准确地切割这些形状。与此同时,全新的v

  • idea 配置SVN_idea的svn插件

    idea 配置SVN_idea的svn插件如何解决idea中配置svn不能用的问题Can’tuseSubversioncommandlineclient:svnThepathtotheSubversionexecutableisprobablywrong.Fixit.mac自带svnsvn–versionbrewlistsubversion然后idea配置文件更改如果默认这样有问题更改为…

  • 普通索引与唯一索引的区别_唯一索引怎么设置

    普通索引与唯一索引的区别_唯一索引怎么设置所谓普通索引,就是在创建索引时,不附加任何限制条件(唯一、非空等限制)。该类型的索引可以创建在任何数据类型的字段上。所谓唯一索引,就是在创建索引时,限制索引的值必须是唯一的。通过该类型的索引可以更快速地查询某条记录。普通索引还是唯一索引?假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会…

  • forkjoinpool 弊端_oracle数据库分页查询sql

    forkjoinpool 弊端_oracle数据库分页查询sql使用forkjoin框架分页查询所有数据的例子importio.swagger.annotations.ApiOperation;importlombok.AllArgsConstructor;importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.context.annotation.PropertySou

  • Canny算子边缘检测原理及实现

    Canny算子边缘检测原理及实现写在前面Canny边缘检是在在1986年提出来的,到今天已经30多年过去了,但Canny算法仍然是图像边缘检测算法中最经典、先进的算法之一。相比Sobel、Prewitt等算子,Canny算法更为优异。Sobel、Prewitt等算子有如下缺点:没有充分利用边缘的梯度方向。 最后得到的二值图,只是简单地利用单阈值进行处理。而Canny算法基于这两点做了改进,提出了:基于边缘梯度…

  • pytest skipif_pytest不是内部或外部命令

    pytest skipif_pytest不是内部或外部命令前言pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能Skip和xfail:处理那些不会成功的测试用例你可以对那些在某些特定平台上不能运行的测试用

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号