多表查询 Mybatis Plus 自定义方法实现分页

本文介绍了两种在MyBatis中实现物理分页的方法:一是通过在SQL语句中添加`LIMIT`来手动分页,二是使用MyBatis-Plus的分页插件实现自动分页。在XML映射文件中配置了相应的查询语句,并展示了如何在Service层进行分页查询。同时,强调了在使用分页插件时必须传递`page`参数以确保分页功能正常工作。
摘要由CSDN通过智能技术生成

一般办法

一般物理分页,即通过sql语句分页,都是在sql语句后面添加limit分页语句,在xml文件里传入分页的参数,再多配置一条sql,用于查询总数:

 <select id="queryStudentsBySql" parameterType="map" resultMap="studentmapper">        
     select * from student limit #{currIndex} , #{pageSize}     
 </select>
 <select id="queryStudentsCount" resultType="java.lang.Integer" parameterType="java.util.Map">       
    select count(*) from student     
 </select>

再新建一个page对象,把需要的结果数据设值进去

mybaties-plus分页实现

分页有一个拦截器的分页插件,利用这个分页插件,不需要自己写拦截器就可以轻松实现分页查询:
分页插件配置

mapper实现

todoQuery封装的查询条件
TodoVo 封装的返回的页面要展示的字段项

  • 一定要传递page参数,否则不能实现分页,查询sql 可以是多表联合查询的复杂语句。
/**
 * <p>
 * 任务表 Mapper 接口
 * </p>
 *

 * @since 2022-04-25
 */
@Mapper
public interface TodoCustomMapper  {

    /**
     * 查询代办任务列表
     * @param todoTaskQuery
     * @return
     */
    List<TodoVo> selectTodoListByQuery(Page page, TodoQuery todoQuery);
}

xml

 <select id="selectTodoListByQuery" resultType="com.liu.vo.TodoTaskVo">
        SELECT
        a.id,
        a.system_code,
      
        a.user_name,
        a.user_id
       
        FROM
       表名 a
        LEFT JOIN 表名 b on 连接条件
        <where>
           
            <if test="todoTaskQuery.genTimeEq!=null and todoTaskQuery.genTimeEq!=''">
                and 条件
            </if>
          
           
        </where>
        ORDER BY
      xxxx
    </select>

service层

public IPage<TodoVo> selectTodoListByQuery(TodoQuery todoQuery) {

        if (ObjectUtil.isNull(todoQuery)){
            todoQuery = new TodoQuery();
            todoQuery.setLimit(10);
            todoQuery.setPage(1);
        }
        Page<TodoVo> page = new Page<>(todoQuery.getPage(), todoQuery.getLimit());
        List<TodoVo> todoVos = todoCustomMapper.selectTodoListByQuery(page, todoQuery);
        page.setRecords(todoVos);
      
        return page;
    }
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值