Mybatis-Plus实现分页查询功能Demo

一、Mybatis实现方式如下:

@Data
public class PagingResult<E> implements Serializable {
    private static final long serialVersionUID = -4925664861534366008L;
    private int count;
    private int current;
    private int pageSize;
    private List<E> results;
}    

PushScheduleTaskReq 返回值实体类

@Data
public class PushScheduleTaskReq extends MthPaging {
    @ApiModelProperty("用户组名称/任务名称")
    private String userGroupOrTaskName;
    @ApiModelProperty("推送状态")
    private Integer pushStatus;
}

PushTaskService

 /**
  * 分页查询定时推送任务,推送类型:1-定时
 */
PagingResult<PushScheduleTaskResp> getScheduleTaskList(PushScheduleTaskReq req);

PushTaskServiceImpl

/**
* 分页查询定时推送任务,推送类型:1-定时
*/
@Override
public PagingResult<PushScheduleTaskResp> getScheduleTaskList(PushScheduleTaskReq req) {
        int count = pushTaskMapper.countScheduleByCondition(req);
        Paging paging = new Paging(req.getPage(), req.getPageSize());
        PagingResult<PushScheduleTaskResp> pagingResult = new PagingResult<>(paging,count);
        if (count < 0) {
            return pagingResult;
        }
        List<PushScheduleTaskResp> userPushList = pushTaskMapper.pageScheduleList(req,paging);
        pagingResult.setResults(userPushList);
        return pagingResult;
    }

PushTaskMapper

 /**
 * 根据条件计算定时任务
 */
    int countScheduleByCondition(@Param(value="pushScheduleTaskReq") PushScheduleTaskReq pushScheduleTaskReq);
 /**
 * 分页查询定时任务
 */
    List<PushScheduleTaskResp> pageScheduleList(@Param(value="pushScheduleTaskReq") PushScheduleTaskReq pushScheduleTaskReq, @Param(value="paging") Paging paging);

PushTaskMapper.xml

 <select id="countScheduleByCondition" resultType="java.lang.Integer">
        select
            count(*)
        from a
            where
            1= 1
            <if test="pushScheduleTaskReq.userGroupOrTaskName != null and pushScheduleTaskReq.userGroupOrTaskName != ''">
                and (
                <bind name="userGroupOrTaskName" value="'%'+pushScheduleTaskReq.userGroupOrTaskName+'%'"/>
                a.pushTaskName like #{userGroupOrTaskName}
                or a.pushTarget like #{userGroupOrTaskName}
                )
            </if>
    </select>

<select id="pageScheduleList"  resultType="com.service.api.response.pushScheduleTaskResp">
      select *
        from a
      where
        1= 1
        <if test="pushScheduleTaskReq.userGroupOrTaskName != null and pushScheduleTaskReq.userGroupOrTaskName != ''">
            and (
                <bind name="userGroupOrTaskName" value="'%'+pushScheduleTaskReq.userGroupOrTaskName+'%'"/>
                a.pushTaskName like #{userGroupOrTaskName}
                or a.pushTarget like #{userGroupOrTaskName}
            )
        </if>
</select>

二、利用mybatis-plus改造

分页插件

@Configuration
@MapperScan("com.example.demo.*")
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

PushTaskServiceImpl

/**
 * 分页查询定时推送任务,推送类型:1-定时
*/
    @Override
    public PagingResult<PushScheduleTaskResp> getScheduleTaskList(PushScheduleTaskRespreq) {
        IPage<PushScheduleTaskResp> page = new Page<>(req.getPage(),req.getPageSize());
        Page<PushScheduleTaskResp> tasks = baseMapper.pageScheduleList(page,req);
        return PagingUtils.getPagingResult(tasks);
    }	

PushTaskMapper

   /**
   *分页查询定时任务
   */
    Page<PushScheduleTaskResp> pageScheduleList(IPage<PushScheduleTaskResp> page, @Param("pushScheduleTaskReq") PushScheduleTaskReq pushScheduleTaskReq);

SQL实现语句不变即PushTaskMapper.xml

单元测试

@Test
	void testSelectPage(){
		QueryWrapper queryWrapper = new QueryWrapper();
		queryWrapper.like("name","OrangeTest");
		//获取当前页为1,每页3条
		IPage<User> page = new Page<>(1,3);
		IPage<User> userPage = userMapper.selectPage(page,queryWrapper);
		System.out.println(userPage.getRecords());
		userPage.getRecords().stream().forEach(i ->{
			System.out.println(i.getId()+"\t"+i.getName());
		});
	}

三、代码及下载

项目下载

参考文章
https://www.jianshu.com/p/3fc4abf2cd31
https://www.cnblogs.com/rrong/p/13629550.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值