zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Mybatis分页插件-PageHelper的使用

mybatis插件 使用 分页 pagehelper
2023-06-13 09:11:43 时间

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

#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); 这样在页面中就可以通过

下面这个是因为我没有进行判断,所以,第0页自然是什么都没有的。

判断的话,在PageInfo里有对应的属性,比如:

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

好了,demo就是这些了。

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

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