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
}
]
相關文章
相關標籤/搜索