Spring Boot+Mybatis+Pagehelper分页
Spring Boot 集成MyBatis和Pagehelper分页插件
mybatis-spring-boot-starter依赖树如下:
pom配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xiaolyuh</groupId>
<artifactId>spring-boot-student-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>spring-boot-student-mybatis</name>
<span class="hljs-comment" style="color:rgb(153,153,136); font-style:italic"><!-- 添加Spring Boot的父类依赖,这样当前项目就是Spring Boot项目了。 spring-boot-starter-parent是一个特殊的starter,他用来
提供相关的maven默认依赖, 使用它之后,常用的依赖可以省去version标签 --></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">parent</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">groupId</span>></span>org.springframework.boot<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">groupId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">artifactId</span>></span>spring-boot-starter-parent<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">artifactId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">version</span>></span>1.5.3.RELEASE<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">version</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">relativePath</span>/></span> <span class="hljs-comment" style="color:rgb(153,153,136); font-style:italic"><!-- lookup parent from repository --></span></br>
<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">parent</span>></span></br></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">properties</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">project.build.sourceEncoding</span>></span>UTF-8<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">project.build.sourceEncoding</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">project.reporting.outputEncoding</span>></span>UTF-8<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">project.reporting.outputEncoding</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">java.version</span>></span>1.8<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">java.version</span>></span></br>
<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">properties</span>></span></br></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">dependencies</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">dependency</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">groupId</span>></span>org.springframework.boot<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">groupId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">artifactId</span>></span>spring-boot-starter<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">artifactId</span>></span></br>
<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">dependency</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">dependency</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">groupId</span>></span>org.springframework.boot<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">groupId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">artifactId</span>></span>spring-boot-starter-web<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">artifactId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">dependency</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">groupId</span>></span>mysql<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">groupId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">artifactId</span>></span>mysql-connector-java<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">artifactId</span>></span></br>
<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">dependency</span>></span></br></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">dependency</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">groupId</span>></span>org.mybatis.spring.boot<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">groupId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">artifactId</span>></span>mybatis-spring-boot-starter<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">artifactId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">version</span>></span>1.3.0<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">version</span>></span></br>
<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">dependency</span>></span></br>
<span class="hljs-comment" style="color:rgb(153,153,136); font-style:italic"><!--pagehelper --></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">dependency</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">groupId</span>></span>com.github.pagehelper<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">groupId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">artifactId</span>></span>pagehelper-spring-boot-starter<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">artifactId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">version</span>></span>1.1.1<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">version</span>></span></br>
<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">dependency</span>></span></br></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">dependency</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">groupId</span>></span>com.alibaba<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">groupId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">artifactId</span>></span>fastjson<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">artifactId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">version</span>></span>1.2.31<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">version</span>></span></br>
<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">dependency</span>></span></br></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">dependency</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">groupId</span>></span>org.springframework.boot<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">groupId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">artifactId</span>></span>spring-boot-starter-test<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">artifactId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">scope</span>></span>test<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">scope</span>></span></br>
<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">dependency</span>></span></br>
<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">dependencies</span>></span></br></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">build</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">plugins</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">plugin</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">groupId</span>></span>org.springframework.boot<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">groupId</span>></span></br>
<span class="hljs-tag" style="color:navy"><<span class="hljs-title" style="">artifactId</span>></span>spring-boot-maven-plugin<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">artifactId</span>></span></br>
<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">plugin</span>></span></br>
<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">plugins</span>></span></br>
<span class="hljs-tag" style="color:navy"></<span class="hljs-title" style="">build</span>></span></br></br>
</project>
application.properties配置
server.port=80
# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/ssb_test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
#连接池配置
#spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
#mybatis
#entity扫描的包名
mybatis.type-aliases-package=com.xiaolyuh.domain.model
#Mapper.xml所在的位置
mybatis.mapper-locations=classpath:/mybaits/Mapper.xml
#pagehelper分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
#日志配置
logging.level.com.xiaolyuh=debug
logging.level.org.springframework.web=debug
logging.level.org.springframework.transaction=debug
logging.level.org.mybatis=debug
debug=false
除了上面常见的两项配置,还有:
mybatis.config-location=mybatis-config.xml配置文件的路径
mybatis.type-handlers-package=扫描typeHandlers的包
mybatis.check-config-location=检查配置文件是否存在
mybatis.executor-type=设置执行模式(SIMPLE, REUSE, BATCH),默认为SIMPLE
Mapping XML文件
在resources文件夹下创建mybaits/PersonMapper.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.xiaolyuh.domain.mapper.PersonMapper" >
<resultMap id="BaseResultMap" type="com.xiaolyuh.domain.model.Person" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<id column="id" property="id" jdbcType="BIGINT" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="age" property="age" jdbcType="INTEGER" />
<result column="address" property="address" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
id, name, age, address
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
select
<include refid="Base_Column_List" />
from person
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
delete from person
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" parameterType="com.xiaolyuh.domain.model.Person" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
SELECT LAST_INSERT_ID()
</selectKey>
insert into person (name, age, address
)
values (#{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, #{address,jdbcType=VARCHAR}
)
</insert>
<insert id="insertSelective" parameterType="com.xiaolyuh.domain.model.Person" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
SELECT LAST_INSERT_ID()
</selectKey>
insert into person
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="name != null" >
name,
</if>
<if test="age != null" >
age,
</if>
<if test="address != null" >
address,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="name != null" >
#{name,jdbcType=VARCHAR},
</if>
<if test="age != null" >
#{age,jdbcType=INTEGER},
</if>
<if test="address != null" >
#{address,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.xiaolyuh.domain.model.Person" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
update person
<set >
<if test="name != null" >
name = #{name,jdbcType=VARCHAR},
</if>
<if test="age != null" >
age = #{age,jdbcType=INTEGER},
</if>
<if test="address != null" >
address = #{address,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.xiaolyuh.domain.model.Person" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
update person
set name = #{name,jdbcType=VARCHAR},
age = #{age,jdbcType=INTEGER},
address = #{address,jdbcType=VARCHAR}
where id = #{id,jdbcType=BIGINT}
</update>
<select id="findAll" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from person
</select>
<select id="findByPage" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from person
</select>
</mapper>
DAO层Mapper类
在Mapper接口上需要加上@Mapper注解,@Mapper注解声明成mybatis Dao层的Bean。也可以在配置类上使用@MapperScan("com.xiaolyuh.domain.mapper")注解声明。
package com.xiaolyuh.domain.mapper;
import com.github.pagehelper.Page;
import com.xiaolyuh.domain.model.Person;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper//声明成mybatis Dao层的Bean,也可以在配置类上使用@MapperScan("com.xiaolyuh.domain.mapper")注解声明
public interface PersonMapper
{
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">int</span> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">deleteByPrimaryKey</span><span class="hljs-params" style="">(Long id)</span></span>;</br></br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">int</span> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">insert</span><span class="hljs-params" style="">(Person record)</span></span>;</br></br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">int</span> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">insertSelective</span><span class="hljs-params" style="">(Person record)</span></span>;</br>
<span class="hljs-function" style="">Person <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">selectByPrimaryKey</span><span class="hljs-params" style="">(Long id)</span></span>;</br></br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">int</span> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">updateByPrimaryKeySelective</span><span class="hljs-params" style="">(Person record)</span></span>;</br></br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">int</span> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">updateByPrimaryKey</span><span class="hljs-params" style="">(Person record)</span></span>;</br></br>
<span class="hljs-comment" style="color:rgb(153,153,136); font-style:italic">/**</br>
* 获取所有数据</br>
* <span class="hljs-doctag" style="color:rgb(221,17,68)">@return</span></br>
*/</span></br>
<span class="hljs-function" style="">List<Person> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">findAll</span><span class="hljs-params" style="">()</span></span>;</br>
<span class="hljs-comment" style="color:rgb(153,153,136); font-style:italic">/**</br>
* 分页查询数据</br>
* <span class="hljs-doctag" style="color:rgb(221,17,68)">@return</span></br>
*/</span></br>
<span class="hljs-function" style="">Page<Person> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">findByPage</span><span class="hljs-params" style="">()</span></span>;</br>
}
实体类
package com.xiaolyuh.domain.model;
public class Person {
<span class="hljs-keyword" style="font-weight:700">private</span> Long id;</br>
/**
* 名称
*/
private String name;
<span class="hljs-comment" style="color:rgb(153,153,136); font-style:italic">/**</br>
* 年龄</br>
*/</span></br>
<span class="hljs-keyword" style="font-weight:700">private</span> Integer age;</br>
<span class="hljs-comment" style="color:rgb(153,153,136); font-style:italic">/**</br>
* 地址</br>
*/</span></br>
<span class="hljs-keyword" style="font-weight:700">private</span> String address;</br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">public</span> Long <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">getId</span><span class="hljs-params" style="">()</span> </span>{</br>
<span class="hljs-keyword" style="font-weight:700">return</span> id;</br>
}</br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">public</span> <span class="hljs-keyword" style="font-weight:700">void</span> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">setId</span><span class="hljs-params" style="">(Long id)</span> </span>{</br>
<span class="hljs-keyword" style="font-weight:700">this</span>.id = id;</br>
}</br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">public</span> String <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">getName</span><span class="hljs-params" style="">()</span> </span>{</br>
<span class="hljs-keyword" style="font-weight:700">return</span> name;</br>
}</br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">public</span> <span class="hljs-keyword" style="font-weight:700">void</span> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">setName</span><span class="hljs-params" style="">(String name)</span> </span>{</br>
<span class="hljs-keyword" style="font-weight:700">this</span>.name = name;</br>
}</br></br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">public</span> Integer <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">getAge</span><span class="hljs-params" style="">()</span> </span>{</br>
<span class="hljs-keyword" style="font-weight:700">return</span> age;</br>
}</br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">public</span> <span class="hljs-keyword" style="font-weight:700">void</span> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">setAge</span><span class="hljs-params" style="">(Integer age)</span> </span>{</br>
<span class="hljs-keyword" style="font-weight:700">this</span>.age = age;</br>
}</br></br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">public</span> String <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">getAddress</span><span class="hljs-params" style="">()</span> </span>{</br>
<span class="hljs-keyword" style="font-weight:700">return</span> address;</br>
}</br></br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">public</span> <span class="hljs-keyword" style="font-weight:700">void</span> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">setAddress</span><span class="hljs-params" style="">(String address)</span> </span>{</br>
<span class="hljs-keyword" style="font-weight:700">this</span>.address = address;</br>
}</br>
}
Service层
接口
package com.xiaolyuh.service;
import com.github.pagehelper.Page;
import com.xiaolyuh.domain.model.Person;
import java.util.List;
/**
Created by yuhao.wang on 2017/6/19.
*/
public interface PersonService
{
List<Person> findAll();
/**
- 分页查询
- @param pageNo 页号
- @param pageSize 每页显示记录数
- @return
- */
- Page<Person> findByPage(int pageNo, int pageSize);
void insert(Person person);
}
实现类
package com.xiaolyuh.service.impl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.xiaolyuh.domain.mapper.PersonMapper;
import com.xiaolyuh.domain.model.Person;
import com.xiaolyuh.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
- Created by yuhao.wang on 2017/6/19.
- */
- @Service
- @Transactional(readOnly = true)
- public class PersonServiceImpl
implements PersonService {
- @Autowired
- private PersonMapper personMapper;
- @Override
- public List<Person> findAll() {
- return personMapper.findAll();
- }
- @Override
- public Page<Person> findByPage(int pageNo, int pageSize) {
- PageHelper.startPage(pageNo, pageSize);
- return personMapper.findByPage();
- }
- @Override
- @Transactional
- public void insert(Person person) {
- personMapper.insert(person);
- }
}
分页的包装类PageInfo
需要把Page包装成PageInfo对象才能序列化。该插件也默认实现了一个PageInfo
package com.xiaolyuh.page;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import com.github.pagehelper.Page;
/**
- 对Page<E>结果进行包装
- <p/>
- 新增分页的多项属性,主要参考:http://bbs.csdn.net/topics/360010907
- @author liuzh/abel533/isea533
- @version 3.3.0
- @since 3.2.2
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public class PageInfo<T> implements Serializable {
private static final long serialVersionUID = 1L;
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List<T> list;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
public PageInfo() {
}
/**
- 包装Page对象
- @param list
- */
- public PageInfo(List<T> list) {
- if (list instanceof Page) {
- Page page = (Page) list;
- this.pageNum = page.getPageNum();
- this.pageSize = page.getPageSize();
<span class="hljs-keyword" style="font-weight:700">this</span>.pages = page.getPages();</br>
<span class="hljs-keyword" style="font-weight:700">this</span>.list = page;</br>
<span class="hljs-keyword" style="font-weight:700">this</span>.total = page.getTotal();</br>
} else if (list instanceof Collection) {
this.pageNum = 1;
this.pageSize = list.size();
<span class="hljs-keyword" style="font-weight:700">this</span>.pages = <span class="hljs-number" style="color:teal">1</span>;</br>
<span class="hljs-keyword" style="font-weight:700">this</span>.list = list;</br>
<span class="hljs-keyword" style="font-weight:700">this</span>.total = list.size();</br></br>
}
if (list instanceof Collection) {
//判断页面边界
judgePageBoudary();
}
}
/**
- 判定页面边界
- */
- private void judgePageBoudary() {
- isFirstPage = pageNum == 1;
- isLastPage = pageNum == pages;
- }
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public boolean isIsFirstPage() {
return isFirstPage;
}
public void setIsFirstPage(boolean isFirstPage) {
this.isFirstPage = isFirstPage;
}
public boolean isIsLastPage() {
return isLastPage;
}
public void setIsLastPage(boolean isLastPage) {
this.isLastPage = isLastPage;
}
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("PageInfo{");
sb.append("pageNum=").append(pageNum);
sb.append(", pageSize=").append(pageSize);
sb.append(", total=").append(total);
sb.append(", pages=").append(pages);
sb.append(", list=").append(list);
sb.append(", isFirstPage=").append(isFirstPage);
sb.append(", isLastPage=").append(isLastPage);
sb.append(", navigatepageNums=");
sb.append('}');
return sb.toString();
}
}
测试类
package com.xiaolyuh;
import com.github.pagehelper.Page;
import com.xiaolyuh.domain.model.Person;
import com.xiaolyuh.page.PageInfo;
import com.xiaolyuh.service.PersonService;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.alibaba.fastjson.JSON;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest
public class PersonMapperTests {
private Logger logger = LoggerFactory.getLogger(PersonMapperTests.class);
<span class="hljs-annotation" style="">@Autowired</span></br>
<span class="hljs-keyword" style="font-weight:700">private</span> PersonService personService;</br>
<span class="hljs-annotation" style="">@Before</span></br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">public</span> <span class="hljs-keyword" style="font-weight:700">void</span> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">testInsert</span><span class="hljs-params" style="">()</span> </span>{</br>
Person person = <span class="hljs-keyword" style="font-weight:700">new</span> Person();</br>
person.setName(<span class="hljs-string" style="color:rgb(221,17,68)">"测试"</span>);</br>
person.setAddress(<span class="hljs-string" style="color:rgb(221,17,68)">"address"</span>);</br>
person.setAge(<span class="hljs-number" style="color:teal">10</span>);</br>
personService.insert(person);</br></br>
Assert.assertNotNull(person.getId());</br>
logger.debug(JSON.toJSONString(person));</br>
}</br>
<span class="hljs-annotation" style="">@Test</span>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">public</span> <span class="hljs-keyword" style="font-weight:700">void</span> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">testFindAll</span><span class="hljs-params" style="">()</span> </span>{</br>
List<Person> persons = personService.findAll();</br></br>
Assert.assertNotNull(persons);</br>
logger.debug(JSON.toJSONString(persons));</br>
}</br>
<span class="hljs-annotation" style="">@Test</span></br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">public</span> <span class="hljs-keyword" style="font-weight:700">void</span> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">testFindByPage</span><span class="hljs-params" style="">()</span> </span>{</br>
Page<Person> persons = personService.findByPage(<span class="hljs-number" style="color:teal">1</span>, <span class="hljs-number" style="color:teal">2</span>);</br>
<span class="hljs-comment" style="color:rgb(153,153,136); font-style:italic">// 需要把Page包装成PageInfo对象才能序列化。该插件也默认实现了一个PageInfo</span></br>
PageInfo<Person> pageInfo = <span class="hljs-keyword" style="font-weight:700">new</span> PageInfo<>(persons);</br>
Assert.assertNotNull(persons);</br>
logger.debug(pageInfo.toString());</br>
logger.debug(JSON.toJSONString(pageInfo));</br>
}</br></br>
<span class="hljs-annotation" style="">@Test</span></br>
<span class="hljs-function" style=""><span class="hljs-keyword" style="font-weight:700">public</span> <span class="hljs-keyword" style="font-weight:700">void</span> <span class="hljs-title" style="color:rgb(153,0,0); font-weight:700">testCacheByPage</span><span class="hljs-params" style="">()</span> </span>{</br>
<span class="hljs-keyword" style="font-weight:700">long</span> begin = System.currentTimeMillis();</br>
List<Person> persons = personService.findAll();</br>
<span class="hljs-keyword" style="font-weight:700">long</span> ing = System.currentTimeMillis();</br>
personService.findAll();</br>
<span class="hljs-keyword" style="font-weight:700">long</span> end = System.currentTimeMillis();</br>
logger.debug(<span class="hljs-string" style="color:rgb(221,17,68)">"第一次请求时间:"</span> + (ing - begin) + <span class="hljs-string" style="color:rgb(221,17,68)">"ms"</span>);</br>
logger.debug(<span class="hljs-string" style="color:rgb(221,17,68)">"第二次请求时间:"</span> + (end - ing) + <span class="hljs-string" style="color:rgb(221,17,68)">"ms"</span>);</br></br>
Assert.assertNotNull(persons);</br>
logger.debug(persons.toString());</br>
logger.debug(JSON.toJSONString(persons));</br>
}</br>
}
</div>
Spring Boot+Mybatis+Pagehelper分页的更多相关文章
- spring boot 整合pagehelper分页插件
Spring Boot 整合pagehelper分页插件 测试环境: spring boot 版本 2.0.0.M7 mybatis starter 版本 1.3.1 jdk 1.8 ------ ...
- Spring Boot + MyBatis + Pagehelper 配置多数据源
前言: 本文为springboot结合mybatis配置多数据源,在项目当中很多情况是使用主从数据源来读写分离,还有就是操作多库,本文介绍如何一个项目同时使用2个数据源. 也希望大家带着思考去学习!博 ...
- Spring boot Mybatis 整合(完整版)
个人开源项目 springboot+mybatis+thymeleaf+docker构建的个人站点开源项目(集成了个人主页.个人作品.个人博客) 朋友自制的springboot接口文档组件swagge ...
- 【转】spring boot mybatis 读取配置文件
spring boot mybatis 配置整理 一.加载mybatis的配置 1.手写配置,写死在代码里 import java.io.IOException; import java.util.P ...
- Spring Boot + MyBatis + Druid + Redis + Thymeleaf 整合小结
Spring Boot + MyBatis + Druid + Redis + Thymeleaf 整合小结 这两天闲着没事想利用**Spring Boot**加上阿里的开源数据连接池**Druid* ...
- 详解spring boot mybatis全注解化
本文重点介绍spring boot mybatis 注解化的实例代码 1.pom.xml //引入mybatis <dependency> <groupId>org.mybat ...
- (45). Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】
大家在开发的时候,会喜欢jdbcTemplate操作数据库,有喜欢JPA操作数据库的,有喜欢MyBatis操作数据库的,对于这些我个人觉得哪个使用顺手就使用哪个就好了,并没有一定要使用哪个,个人在实际 ...
- spring boot + mybatis + layui + shiro后台权限管理系统
后台管理系统 版本更新 后续版本更新内容 链接入口: springboot + shiro之登录人数限制.登录判断重定向.session时间设置:https://blog.51cto.com/wyai ...
- spring boot+mybatis搭建项目
一.创建spring boot项目 1.File->New->Project 2.选择 Spring Initializr ,然后选择默认的 url 点击[Next]: 3.修改项目信息 ...
随机推荐
- WPF转换器
1. 前文 在普遍的也业务系统中, 数据要驱动到操作的用户界面, 它实际储存的方式和表达方式会多种多样, 数据库存储的数字 0或1, 在界面用户看到显示只是 成功或失败, 或者存储的字符.或更多的格式 ...
- 洛谷 P2837 晚餐队列安排
P2837 晚餐队列安排 题目背景 Usaco Feb08 Bronze 题目描述 为了避免餐厅过分拥挤,FJ要求奶牛们分2批就餐.每天晚饭前,奶牛们都会在餐厅前排队入内,按FJ的设想,所有第2批就餐 ...
- Javascript:存储和读取cookie
Cookie是网页开发中的一项重要技术,用于在本地存储一些信息(如username,password.登录状态)以便用户下一次訪问时使用(或在其他页面使用). cookie的格式是键值对,多个键值对之 ...
- google 分屏 横屏模式 按home键界面错乱故障分析(二) 分屏的启动过程
google 进入分屏后在横屏模式按home键界面错乱(二) 你确定你了解分屏的整个流程? imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&quo ...
- WIN8.1的安装和打开"这台电脑"速度很慢的解决办法
WIN8.1的安装和打开"这台电脑"速度很慢的解决办法 对于非服务器用的电脑,如果电脑的内存在2G或更高,首推的操作系统是 WINDOWS8.1 64位企业版,用了就知道,没有比这流畅懂事的操作系统. ...
- mahout算法库(四)
mahout算法库 分为三大块 1.聚类算法 2.协同过滤算法(一般用于推荐) 协同过滤算法也可以称为推荐算法!!! 3.分类算法 算法类 算法名 中文名 分类算法 Log ...
- jmeter响应数据中文乱码问题
进入jmeter安装文件目录:D:\Program File\apache-jmeter-2.13\apache-jmeter-2.13\bin\ 修改jmeter.properties文件,在最下方 ...
- setInterval 传参数
<script type="text/javascript" > window.onload=function(){ for(var i=1;i<3;i++){ ...
- setting-在设置中添加新的选项
如下图的“通知栏调出方式” 具体实现如下 1.在 res/xml/settings_headers.xml 文件中添加如下内容 <preference-headers xmlns:android ...
- amaze样例页面分析(一)
amaze样例页面分析(一) 一.总结 1.从审查(inspect)中是很清楚的可以弄清楚这些part之间的结构关系的 2.一者在于弄清楚他们之间的结构关系,二者在于知道结构的每一部分是干嘛的 3.i ...