Mybatis-Plus 多表联查分页的实现代码

 更新时间:2018年06月06日 14:41:18   作者:殷天文  
本篇文章主要介绍了Mybatis-Plus 多表联查分页的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

上一节,简单讲述了 Mybatis-Plus 搭建与使用入门,这一节,简单讲一下如何使用 MP 实现多表分页。

分析

使用的工程,依旧是 spring-boot,关于分页,官网给出了一个单表的demo,其实多表分页实现原理相同,都是通过 mybatis 的拦截器

(拦截器做了什么?他会在你的 sql 执行之前,为你做一些事情,例如分页,我们使用了 MP 不用关心 limit,拦截器为我们拼接。我们也不用关心总条数,拦截器获取到我们 sql 后,拼接 select count(*) 为我们查询总条数,添加到参数对象中)。

实现

1. 配置拦截器

@EnableTransactionManagement
@Configuration
@MapperScan("com.web.member.mapper")
public class MybatisPlusConfig {
  /**
   * mybatis-plus SQL执行效率插件【生产环境可以关闭】
   */
  @Bean
  public PerformanceInterceptor performanceInterceptor() {
    return new PerformanceInterceptor();
  }

  /*
   * 分页插件,自动识别数据库类型 多租户,请参考官网【插件扩展】
   */
  @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);
  
}

这里要注意的是,这个 Pagination page 是必须要有的,否则 MP 无法为你实现分页。

  <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 实现

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>
 * 用户表 服务实现类
 * </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());// 当前页,总条数 构造 page 对象
    return page.setRecords(this.baseMapper.selectUserListPage(page, user));
  }
  
}

最后将结果集 set 到 page 对象中,page 对象的 json 结构如下

{
  "total": 48,//总记录
  "size": 10,//每页显示多少条
  "current": 1,//当前页
  "records": [//结果集 数组
    {...},
    {...},
    {...},
     ...
  ],
  "pages": 5 // 总页数
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • @Accessors(chain = true)注解报错的解决方案

    @Accessors(chain = true)注解报错的解决方案

    这篇文章主要介绍了@Accessors(chain = true)注解报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 修改jar包package目录结构操作方法

    修改jar包package目录结构操作方法

    这篇文章主要介绍了修改jar包package目录结构操作方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-07-07
  • java8快速实现List转map 、分组、过滤等操作

    java8快速实现List转map 、分组、过滤等操作

    这篇文章主要介绍了java8快速实现List转map 、分组、过滤等操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • SpringBoot--Banner的定制和关闭操作

    SpringBoot--Banner的定制和关闭操作

    这篇文章主要介绍了SpringBoot--Banner的定制和关闭操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2018-05-05
  • Java中JSON字符串与java对象的互换实例详解

    Java中JSON字符串与java对象的互换实例详解

    这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • httpclient模拟post请求json封装表单数据的实现方法

    httpclient模拟post请求json封装表单数据的实现方法

    下面小编就为大家带来一篇httpclient模拟post请求json封装表单数据的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Java中关于二叉树层序遍历深入了解

    Java中关于二叉树层序遍历深入了解

    二叉树的层序遍历是面试经常会被考察的知识点,甚至要求当场写出实现过程。层序遍历所要解决的问题很好理解,就是按二叉树从上到下,从左到右依次打印每个节点中存储的数据,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • SpringBoot设置Json返回字段为非空问题

    SpringBoot设置Json返回字段为非空问题

    这篇文章主要介绍了SpringBoot设置Json返回字段为非空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • mybatis实现对数据的增删查改实例详解

    mybatis实现对数据的增删查改实例详解

    这篇文章主要介绍了mybatis实现对数据的增删查改实例详解的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • ssm实现视频的上传与播放的示例代码

    ssm实现视频的上传与播放的示例代码

    这篇文章主要介绍了ssm实现视频的上传与播放的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论