欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis-Flex實現(xiàn)分頁查詢的示例代碼

 更新時間:2024年10月14日 11:10:16   作者:玉米淀粉  
在MyBatis-Flex中實現(xiàn)分頁查詢時,需要注意維護一個獲取數(shù)據(jù)庫總數(shù)的方法,詳細介紹了UserService、UserServiceImpl類以及Mapper.xml配置,感興趣的可以了解一下

實現(xiàn)flex的分頁查詢需要去維護一個對應(yīng)的獲取數(shù)據(jù)庫總數(shù)的方法,下面會對有無該方法進行一個比較

實現(xiàn)文件主要以下幾個類,注意UserMapper.xml的位置,默認是掃描resources下的mapper包

首先實現(xiàn)UserService和對應(yīng)的實現(xiàn)類,并在內(nèi)部進行對應(yīng)邏輯代碼實現(xiàn)

UserService

public interface IUserService {
    List<User> getAll();

    /**
     * 
     * @param page 當(dāng)前頁數(shù)
     * @param pageSize  每頁的總條數(shù)
     * @return
     */
    Page<User> getPage(int page, int pageSize);
}

UserServiceImpl 對應(yīng)的實現(xiàn)類

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
    @Resource
    private UserMapper userMapper;

    @Override
    public List<User> getAll() {
        return this.getMapper().selectAll();
    }

    @Override
    public Page<User> getPage(int page, int pageSize) {
        // 查詢數(shù)據(jù)庫的條件 這邊可以根據(jù)自身需求進行對應(yīng)條件添加
        // 可以自行查看源碼,這邊不加以闡述
        QueryWrapper queryWrapper = QueryWrapper.create();
        // selectPage 對應(yīng)的指定mapper的方法
        // page.of()內(nèi)的page 和 pageSize就對應(yīng)我們的參數(shù) 即頁數(shù)和行數(shù)
        // queryWrapper 查詢條件
        Page<User> pageInfo = userMapper.xmlPaginate("selectPage", Page.of(page, pageSize) , queryWrapper);
        return pageInfo;
    }
}

Mapper

@Mapper
public interface UserMapper extends BaseMapper<User> {

    /**
     * flex的分頁配置
     * @return
     */
    long selectPage_COUNT();

    /**
     * 分頁
     * @return
     */
    List<User> selectPage();
}

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" >
<!--namespace根據(jù)自己需要創(chuàng)建的的mapper的路徑和名稱填寫-->
<mapper namespace="org.wyq.studyone.mapper.UserMapper">
    <!--    分頁查詢-->
    <!--    resultType對應(yīng)的是你的實體類 User的路徑-->
    <select id="selectPage" resultType="org.wyq.studyone.entity.User">
        select *
        from `user` limit ${pageOffset}, ${pageSize}
    </select>

    <!--    flex分頁配置-->
    <select id="selectPage_COUNT" resultType="long">
        select count(*)
        from `user`
    </select>
</mapper>

selectPage_COUNT該方法沒有的話在執(zhí)行分頁方法時會報錯,具體如下

java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for org.wyq.studyone.mapper.UserMapper.selectPage_COUNT

 可以看到,在沒有selectPage_COUNT的情況下,會報找不到這個方法,可我們明明沒有調(diào)用過該函數(shù)啊,其實這個是分頁的內(nèi)部會去進行的一個調(diào)用,對此我們可以看一下xmlPaginate相關(guān)的源碼

Page<User> pageInfo = userMapper.xmlPaginate("selectPage", Page.of(page, pageSize) , queryWrapper);
default <E> Page<E> xmlPaginate(String dataSelectId, Page<E> page, QueryWrapper queryWrapper) {
    return this.xmlPaginate(dataSelectId, dataSelectId + "_COUNT", page, queryWrapper, (Map)null);
}

可以看到,其內(nèi)部的組裝了 dataSelectId + "_COUNT" 這嗎一個變量,這個變量其實就是selectPage + _COUNT 也就是 selectPage_COUNT,所以我們以后要寫分頁代碼的話就需要加個對應(yīng)的 dataSelectId + "_COUNT" 用來實現(xiàn)其分頁內(nèi)部的變量

這個雖然麻煩但一定意義上實現(xiàn)了代碼的更加靈活性

好了,開始代碼測試

controller層:

/*
 * Copyright 2013-2018 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.wyq.studyone.controller;

import com.mybatisflex.core.paginate.Page;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.wyq.studyone.entity.User;
import org.wyq.studyone.service.IUserService;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author <a href="mailto:chenxilzx1@gmail.com" rel="external nofollow" >theonefx</a>
 */
@Controller
public class UserController {
    @Resource
    private IUserService userService;

    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
        List<User> all = userService.getAll();
        return all.toString();
    }

    @RequestMapping("/page")
    @ResponseBody
    public String page(int page, int pageSize) {
        Page<User> pageInfo = userService.getPage(page, pageSize);
        return pageInfo.toString();
    }

}

可以看到確實是獲取前面五條數(shù)據(jù)

到此這篇關(guān)于MyBatis-Flex實現(xiàn)分頁查詢的示例代碼的文章就介紹到這了,更多相關(guān)MyBatis-Flex 分頁查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實現(xiàn)定時任務(wù)的示例代碼

    Java實現(xiàn)定時任務(wù)的示例代碼

    這篇文章主要為大家詳細介紹了Java實現(xiàn)定時任務(wù)的相關(guān)知識,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-11-11
  • java 動態(tài)加載的實現(xiàn)代碼

    java 動態(tài)加載的實現(xiàn)代碼

    這篇文章主要介紹了java 動態(tài)加載的實現(xiàn)代碼的相關(guān)資料,Java動態(tài)加載類主要是為了不改變主程序代碼,通過修改配置文件就可以操作不同的對象執(zhí)行不同的功能,需要的朋友可以參考下
    2017-07-07
  • Java?入門圖形用戶界面設(shè)計之事件處理下

    Java?入門圖形用戶界面設(shè)計之事件處理下

    圖形界面(簡稱GUI)是指采用圖形方式顯示的計算機操作用戶界面。與早期計算機使用的命令行界面相比,圖形界面對于用戶來說在視覺上更易于接受,本篇精講Java語言中關(guān)于圖形用戶界面的事件處理
    2022-02-02
  • springboot連接kafka集群的使用示例

    springboot連接kafka集群的使用示例

    在項目中使用kafka的場景有很多,尤其是實時產(chǎn)生的數(shù)據(jù)流,本文主要介紹了springboot連接kafka集群的使用示例,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • SpringBoot整合spring-data-jpa的方法

    SpringBoot整合spring-data-jpa的方法

    這篇文章主要介紹了SpringBoot整合spring-data-jpa的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • IDEA導(dǎo)入jar包的完整實現(xiàn)步驟

    IDEA導(dǎo)入jar包的完整實現(xiàn)步驟

    由于導(dǎo)入jar包項目存在很多不確定的問題,導(dǎo)致每次都需要調(diào)試、配置好多遍,對此特意記錄下來,這篇文章主要給大家介紹了關(guān)于IDEA導(dǎo)入jar包的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • 微服務(wù)實戰(zhàn)之怎樣提升springboot服務(wù)吞吐量

    微服務(wù)實戰(zhàn)之怎樣提升springboot服務(wù)吞吐量

    這篇文章主要介紹了微服務(wù)實戰(zhàn)之怎樣提升springboot服務(wù)吞吐量方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • springboot自定義日志注解的實現(xiàn)

    springboot自定義日志注解的實現(xiàn)

    本文主要介紹了springboot自定義日志注解的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • SpringBoot配置 Druid 三種方式(包括純配置文件配置)

    SpringBoot配置 Druid 三種方式(包括純配置文件配置)

    本文給大家分享在項目中用純 YML(application.yml 或者 application.properties)文件、Java 代碼配置 Bean 和注解三種方式配置 Alibaba Druid 用于監(jiān)控或者查看 SQL 狀況的相關(guān)知識,感興趣的朋友一起看看吧
    2021-10-10
  • Java中拼接字符串String的N種方法總結(jié)

    Java中拼接字符串String的N種方法總結(jié)

    字符串拼接是我們在Java代碼中比較經(jīng)常要做的事情,就是把多個字符串拼接到一起,下面這篇文章主要給大家介紹了關(guān)于Java中拼接String的N種方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-02-02

最新評論