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

Mybatis-Plus 多表聯(lián)查分頁(yè)的實(shí)現(xiàn)代碼

 更新時(shí)間:2018年06月06日 14:41:18   作者:殷天文  
本篇文章主要介紹了Mybatis-Plus 多表聯(lián)查分頁(yè)的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

上一節(jié),簡(jiǎn)單講述了 Mybatis-Plus 搭建與使用入門,這一節(jié),簡(jiǎn)單講一下如何使用 MP 實(shí)現(xiàn)多表分頁(yè)。

分析

使用的工程,依舊是 spring-boot,關(guān)于分頁(yè),官網(wǎng)給出了一個(gè)單表的demo,其實(shí)多表分頁(yè)實(shí)現(xiàn)原理相同,都是通過(guò) mybatis 的攔截器

(攔截器做了什么?他會(huì)在你的 sql 執(zhí)行之前,為你做一些事情,例如分頁(yè),我們使用了 MP 不用關(guān)心 limit,攔截器為我們拼接。我們也不用關(guān)心總條數(shù),攔截器獲取到我們 sql 后,拼接 select count(*) 為我們查詢總條數(shù),添加到參數(shù)對(duì)象中)。

實(shí)現(xiàn)

1. 配置攔截器

@EnableTransactionManagement
@Configuration
@MapperScan("com.web.member.mapper")
public class MybatisPlusConfig {
  /**
   * mybatis-plus SQL執(zhí)行效率插件【生產(chǎn)環(huán)境可以關(guān)閉】
   */
  @Bean
  public PerformanceInterceptor performanceInterceptor() {
    return new PerformanceInterceptor();
  }

  /*
   * 分頁(yè)插件,自動(dòng)識(shí)別數(shù)據(jù)庫(kù)類型 多租戶,請(qǐng)參考官網(wǎng)【插件擴(kuò)展】
   */
  @Bean
  public PaginationInterceptor paginationInterceptor() {
    return new PaginationInterceptor();
  }
}

2. mapper 接口以及 xml

/**
 * <p>
 * 用戶表 Mapper 接口
 * </p>
 *
 * @author 殷天文
 * @since 2018-06-01
 */
public interface UserMapper extends BaseMapper<User> {

  List<UserListModel> selectUserListPage(Pagination page ,@Param("user") UserListBean user);
  
}

這里要注意的是,這個(gè) Pagination page 是必須要有的,否則 MP 無(wú)法為你實(shí)現(xiàn)分頁(yè)。

  <select id="selectUserListPage" resultType="com.web.member.model.UserListModel">
    SELECT
      *
    FROM
      ftms_user u
    LEFT JOIN ftms_user_level l ON u.level_id = l.id
    WHERE 1=1
      <if test="user.nickname != null">
        and u.nickname like "%"#{user.nickname}"%" 
      </if>
  </select>

3. service 實(shí)現(xiàn)

import com.web.member.beans.admin.UserListBean;
import com.web.member.entity.User;
import com.web.member.mapper.UserMapper;
import com.web.member.model.UserListModel;
import com.web.member.service.UserService;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * <p>
 * 用戶表 服務(wù)實(shí)現(xiàn)類
 * </p>
 *
 * @author 殷天文
 * @since 2018-06-01
 */
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

  @Transactional(readOnly=true)
  @Override
  public Page<UserListModel> selectUserListPage(UserListBean user) {
    Page<UserListModel> page = new Page<>(user.getCurr(), user.getNums());// 當(dāng)前頁(yè),總條數(shù) 構(gòu)造 page 對(duì)象
    return page.setRecords(this.baseMapper.selectUserListPage(page, user));
  }
  
}

最后將結(jié)果集 set 到 page 對(duì)象中,page 對(duì)象的 json 結(jié)構(gòu)如下

{
  "total": 48,//總記錄
  "size": 10,//每頁(yè)顯示多少條
  "current": 1,//當(dāng)前頁(yè)
  "records": [//結(jié)果集 數(shù)組
    {...},
    {...},
    {...},
     ...
  ],
  "pages": 5 // 總頁(yè)數(shù)
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)文件上傳和下載的方法詳解

    Java實(shí)現(xiàn)文件上傳和下載的方法詳解

    文件上傳,也稱為upload,是指將本地圖片、視頻、音頻等文件上傳到服務(wù)器上。文件下載,也稱為download,是指將文件從服務(wù)器傳輸?shù)奖镜赜?jì)算機(jī)的過(guò)程。本文將用Java實(shí)現(xiàn)文件上傳和下載,需要的可以參考一下
    2022-09-09
  • Java實(shí)現(xiàn)Floyd算法的示例代碼

    Java實(shí)現(xiàn)Floyd算法的示例代碼

    Floyd算法又稱為插點(diǎn)法,是一種利用動(dòng)態(tài)規(guī)劃的思想尋找給定的加權(quán)圖中多源點(diǎn)之間最短路徑的算法。本文將用Java語(yǔ)言實(shí)現(xiàn)Floyd算法,需要的可以參考一下
    2022-07-07
  • ?Java數(shù)據(jù)結(jié)構(gòu)的十大排序

    ?Java數(shù)據(jù)結(jié)構(gòu)的十大排序

    這篇文章主要介紹了?Java數(shù)據(jù)結(jié)構(gòu)的十大排序,排序算法分為比較類排序和非比較類排序,具體的內(nèi)容,需要的朋友參考下面思維導(dǎo)圖及文章介紹,希望對(duì)你有所幫助
    2022-01-01
  • Hibernate 與 Mybatis 的共存問題,打破你的認(rèn)知!(兩個(gè)ORM框架)

    Hibernate 與 Mybatis 的共存問題,打破你的認(rèn)知!(兩個(gè)ORM框架)

    這篇文章主要介紹了Hibernate 與 Mybatis 如何共存?本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • java8新特性之stream的collect實(shí)戰(zhàn)教程

    java8新特性之stream的collect實(shí)戰(zhàn)教程

    這篇文章主要介紹了java8新特性之stream的collect實(shí)戰(zhàn)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Java BufferedImage轉(zhuǎn)換為MultipartFile方式

    Java BufferedImage轉(zhuǎn)換為MultipartFile方式

    這篇文章主要介紹了Java BufferedImage轉(zhuǎn)換為MultipartFile方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • mybatis中的test語(yǔ)句失效處理方式

    mybatis中的test語(yǔ)句失效處理方式

    這篇文章主要介紹了mybatis中的test語(yǔ)句失效處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java實(shí)現(xiàn)兩個(gè)線程交替打印的實(shí)例代碼

    java實(shí)現(xiàn)兩個(gè)線程交替打印的實(shí)例代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于java實(shí)現(xiàn)兩個(gè)線程交替打印的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們參考下。
    2019-12-12
  • Java8新特性之默認(rèn)方法(default)淺析

    Java8新特性之默認(rèn)方法(default)淺析

    這篇文章主要介紹了Java8新特性之默認(rèn)方法(default)淺析,默認(rèn)方法也稱為虛擬擴(kuò)展方法或防護(hù)方法,可以讓我們修改接口而不破壞原來(lái)的實(shí)現(xiàn)類的結(jié)構(gòu),需要的朋友可以參考下
    2014-06-06
  • Java中的fail-fast機(jī)制使用詳解

    Java中的fail-fast機(jī)制使用詳解

    fail-fast機(jī)制是Java集合中用于檢測(cè)并發(fā)修改的一種機(jī)制,當(dāng)一個(gè)線程遍歷集合時(shí),如果集合被其他線程修改,就會(huì)拋出ConcurrentModificationException異常,解決fail-fast機(jī)制的方法包括使用普通for循環(huán)、Iterator
    2025-01-01

最新評(píng)論