SpringBoot分页组件PageHelper介绍及使用

这篇主要说一下上篇介绍的mybatis分页组件,若是大家以为不必,非要本身封装分页,也是能够的啦,就像博主上一篇,本身写个分页实现,而后本身捣鼓就行了。java

#maven依赖mysql

<!-- mysql -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.32</version>
    </dependency>

    <!-- mybatis -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>${spring.mybatis.version}</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-autoconfigure</artifactId>
        <version>${spring.mybatis.version}</version>
    </dependency>

    <!--mapper-->
    <dependency>
        <groupId>tk.mybatis</groupId>
        <artifactId>mapper-spring-boot-starter</artifactId>
        <version>1.0.0</version>
    </dependency>

    <!-- 分页插件 https://github.com/pagehelper/Mybatis-PageHelper -->
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.0.0</version>
    </dependency>

#实体公共类与Mapper公共类git

实体公共类 BaseEntity.java,其中的get/set略。说一下@GeneratedValue(strategy = GenerationType.IDENTITY)主键增加策略,@Transient实体中若是有和数据库没有对应的属性必需要加这个注解github

@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

[@Transient](https://my.oschina.net/transient)
private Integer page = 1;

[@Transient](https://my.oschina.net/transient)
private Integer rows = 10;

公用的Mapper.java类,这个类不能被扫描到,以下很简单空着就行spring

public interface BaseMapper<T> extends Mapper<T>, MySqlMapper<T> {
}

#Mapper与mapper.xml还有实体类写法sql

Mapper类,mapper类继承BaseMapper类,下面的那个接口是扩展的,写本身的业务的。到这的时候,你的增删改查都具有了。数据库

@Repository("userMapper")
public interface UserMapper extends BaseMapper<User>{

    /**
     * 这个接口是本身业务接口
     * @param name
     * @return
     */
    List<User> queryUserInfoByName(@Param("name") String name);

}

mapper.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.dengzy.kuj.mybatis.dao.UserMapper">

    <resultMap id="BaseResultMap" type="com.dengzy.kuj.mybatis.model.User">
        <id column="id" jdbcType="INTEGER" property="id" />
        <result column="name" jdbcType="VARCHAR" property="name" />
        <result column="createDate" jdbcType="TIMESTAMP" property="createdate" />
    </resultMap>
    <sql id="Base_Column_List">
        id, name, createDate
    </sql>

    <select id="queryUserInfoByName" parameterType="java.lang.String" resultMap="BaseResultMap">
        select * from user
        <where>
            <if test="null != name">
                and name = #{name,jdbcType=VARCHAR}
            </if>

        </where>

    </select>
    
</mapper>

#Service里面使用 Service里面使用和平时同样是正常使用的,此处有展现一下mapper中含有的方法:mybatis

展现一下Mapper中已经有的默认方法 输入图片说明 输入图片说明 输入图片说明app

#Controller里面使用 从Controller里面使用,service返回的数据放到PageInfo中便可

@RequestMapping(value = "queryUserPage")
public PageInfo<User> queryUserPage(User user){
    List<User> userInfoList =  userService.getAllUser(user);
    return new PageInfo<User>(userInfoList);
}

#配置文件配置

配置文件以下,为什么要配置这几个属性是根据本身须要来的,正常默认便可使用了。

#mybatis
mybatis:
  config-location: classpath:META-INF\mybatis-config.xml

mapper:
    mappers:
        - com.dengzy.kuj.mybatis.common.mapping.BaseMapper
    not-empty: true
    identity: MYSQL

pagehelper:
  helperDialect: mysql
  reasonable: true  #为了使用输入页数为负或者超出最大页时候使页数为最小或最大值
  supportMethodsArguments: true
  params: count=countSql
  pageSizeZero: true #pageSize=0 or RowBounds.Limit = 0的时候就不适用分页,可是返回对象仍是PageInfo

#启动及浏览器访问

输入图片说明

你说你不须要这么多参数,那你就不须要返回PageInfo对象就能够了,请求返回以下

[
{
"id": 2,
"page": 1,
"rows": 10,
"name": "user",
"createdate": 1483703436000
},
{
"id": 3,
"page": 1,
"rows": 10,
"name": "user",
"createdate": 1483703459000
},
{
"id": 4,
"page": 1,
"rows": 10,
"name": "user",
"createdate": 1483703660000
},
{
"id": 5,
"page": 1,
"rows": 10,
"name": "user",
"createdate": 1483703698000
}
]
相关文章
相关标签/搜索