mybatis-plus 分页类型转换工具类

 更新时间:2022年03月11日 10:23:50   作者:洛阳泰山  
用mybatis-plus 的分页对象的时候,因为用mybatis-puls 查询出来的分页对象的records里的泛型是实体,有时候需要将实体转换为前端展示的对象,所有写了一个分页数据的类型转换工具,解决这个问题,对mybatis-plus 分页工具类相关知识感兴趣的朋友一起看看吧

前言

 用mybatis-plus 的分页对象的时候,因为用mybatis-puls 查询出来的分页对象的records里的泛型是实体,有时候需要将实体转换为前端展示的对象,所有写了一个分页数据的类型转换工具,解决这个问题。

代码示例

public IPage<TransparentGeologicalVO> pageList(TransparentGeologicalQueryDTO query) {
        IPage<TransparentGeological> page=this.lambdaQuery()
                .like(StringUtil.isNotBlank(query.getName()),TransparentGeological::getName,query.getName())
                .eq(Objects.nonNull(query.getWorkFaceId()),TransparentGeological::getWorkFaceId,query.getWorkFaceId())
                .orderByDesc(TransparentGeological::getCreateTime)
                .page(Condition.getPage(query));
        IPage<TransparentGeologicalVO> result= PageUtil.copy(page,TransparentGeologicalVO.class);
        result.getRecords().forEach(e->e.setWorkFaceName(WorkFaceCache.getWorkFaceName(e.getWorkFaceId())));
        return  result;
     }

pom文件引入mybatis-pius依赖

<!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

 分页转换工具如下

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springblade.core.tool.utils.BeanUtil;
 
import java.util.List;
public class PageUtil {
    /**
     * @Description:转换为 IPage 对象
     * @Author: tarzan
     * @Date: 2019/10/31 9:40
     */
    public static <T, E> IPage<T> copy(IPage page, List<E> sourceList, Class<T> targetClazz) {
        IPage pageResult = new Page(page.getCurrent(),page.getSize(),page.getTotal());
        pageResult.setPages(page.getPages());
        List<T> records = BeanUtil.copy(sourceList, targetClazz);
        pageResult.setRecords(records);
        return pageResult;
    }
    public static <T, E> IPage<T> copy(IPage page, Class<T> targetClazz) {
        return copy(page,page.getRecords(),targetClazz);
}

补充:MYBATIS PLUS 分页工具类

 
import com.baomidou.mybatisplus.plugins.Page;
import com.sun.collierycommon.domain.PageParamDTO;
import com.sun.collierycommon.domain.PageResultDTO;
import java.util.List;
/**
 * @Description:分页工具类
 * @Author: tarzan 
 * @Date: 2019/10/31 9:13
 */
public class SmartPaginationUtil {
    public static <T> PageResultDTO<T> convert2PageInfoDTO(Page<T> page) {
        PageResultDTO<T> result = new PageResultDTO<>();
        result.setPageNum(page.getCurrent());
        result.setPageSize(page.getSize());
        result.setTotal(Long.valueOf(page.getTotal()));
        result.setPages(page.getPages());
        result.setList(page.getRecords());
        return result;
    }
    public static <T> Page<T> convert2PageQueryInfo(PageParamDTO baseDTO) {
        Page<T> page = new Page<>();
        Boolean sort = baseDTO.getSort();
        if (null != sort) {
            page.setAsc(sort);
        }
        if (null != baseDTO.getSortField()){
            page.setOrderByField(baseDTO.getSortField());
        page.setCurrent(baseDTO.getPageNum());
        page.setSize(baseDTO.getPageSize());
        if (null != baseDTO.getSearchCount()) {
            page.setSearchCount(baseDTO.getSearchCount());
        return page;
    /**
     * @Description:转换为 PageResultDTO 对象
     * @Author: sunboqiang
     * @Date: 2019/10/31 9:40
     */
    public static <T, E> PageResultDTO<T> convert2PageInfoDTO(Page page, List<E> sourceList, Class<T> targetClazz) {
        PageResultDTO pageResultDTO = setPage(page);
        List<T> records = SmartBeanUtil.copyList(sourceList, targetClazz);
        page.setRecords(records);
        pageResultDTO.setList(records);
        return pageResultDTO;
     * 转换为 PageResultDTO 对象
    public static <T, E> PageResultDTO<T> convert2PageInfoDTO(Page page, List<E> sourceList) {
        page.setRecords(sourceList);
        pageResultDTO.setList(sourceList);
    private static PageResultDTO setPage(Page page) {
        PageResultDTO pageResultDTO = new PageResultDTO();
        pageResultDTO.setPageNum(page.getCurrent());
        pageResultDTO.setPageSize(page.getSize());
        pageResultDTO.setTotal(Long.valueOf(page.getTotal()));
        pageResultDTO.setPages(page.getPages());
}

serve层中分页方法的使用

	public ResponseDTO<PageResultDTO<ProductionDigProgressListVO>> list(ProductionDigProgressParamDTO param,SystemUserVo userVo){
		Page page= SmartPaginationUtil.convert2PageQueryInfo(param);
		EntityWrapper<ProductionDigProgressEntity> wrapper=  new EntityWrapper<>();
		wrapper.eq("deleted", DeletedEnum.NO_DELETED.getValue());
		wrapper.eq("company_id", userVo.getCompanyId());
		wrapper.like(StringUtils.isNotBlank(param.getName()),"name",param.getName());
		wrapper.like(StringUtils.isNotBlank(param.getTeamName()),"team_name",param.getTeamName());
		List<ProductionDigProgressListVO> pageList= Lists.newArrayList();
		List<ProductionDigProgressEntity> list= productionDigProgressDao.selectPage(page,wrapper);
		if(CollectionUtils.isNotEmpty(list)){
			pageList=SmartBeanUtil.copyList(list,ProductionDigProgressListVO.class);
		}
		return ResponseDTO.succData(SmartPaginationUtil.convert2PageInfoDTO(page,pageList));
	}

到此这篇关于mybatis-plus 分页类型转换工具类的文章就介绍到这了,更多相关mybatis-plus 分页工具类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java反射机制,如何将一个实体类所有字段赋值为null

    Java反射机制,如何将一个实体类所有字段赋值为null

    这篇文章主要介绍了Java反射机制,如何将一个实体类所有字段赋值为null,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Spring 自动装配的二义性实例解析

    Spring 自动装配的二义性实例解析

    这篇文章主要介绍了Spring 自动装配的二义性实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • IDEA创建Servlet编写HelloWorldServlet页面详细教程(图文并茂)

    IDEA创建Servlet编写HelloWorldServlet页面详细教程(图文并茂)

    在学习servlet过程中参考的教程是用eclipse完成的,而我在练习的过程中是使用IDEA的,在创建servlet程序时遇到了挺多困难,在此记录一下,这篇文章主要给大家介绍了关于IDEA创建Servlet编写HelloWorldServlet页面详细教程的相关资料,需要的朋友可以参考下
    2023-10-10
  • Java基础之八大排序算法

    Java基础之八大排序算法

    这篇文章主要介绍了Java基础之八大排序算法,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • java8新特性之接口的static和default的使用

    java8新特性之接口的static和default的使用

    这篇文章主要介绍了java8新特性之接口的static和default的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 深入解读MVC模式和三层架构

    深入解读MVC模式和三层架构

    这篇文章主要介绍了深入解读MVC模式和三层架构,三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)的三层架构,各层之间采用接口相互访问,需要的朋友可以参考下
    2023-04-04
  • SpringBoot全局异常处理方式

    SpringBoot全局异常处理方式

    本文详细介绍了Spring Boot中异常处理的多种方案,包括基于请求转发、异常处理器、过滤器等方式,并对其特点、实现方式和适用场景进行了详细介绍,作者推荐了基于请求转发和异常处理器+请求转发补充的方案,认为它们能实现统一的全局异常处理,并能自定义统一响应信息格式
    2024-12-12
  • java分类树,我从2s优化到0.1s

    java分类树,我从2s优化到0.1s

    这篇文章主要介绍了java分类树,我从2s优化到0.1s的相关资料,需要的朋友可以参考下
    2023-05-05
  • MyBatis使用嵌套查询collection和association的实现

    MyBatis使用嵌套查询collection和association的实现

    本文详细介绍了使用MyBatis框架进行数据库操作时,如何利用collection标签实现一对多的嵌套查询和使用association标签实现一对一的嵌套查询,感兴趣的可以了解一下
    2024-09-09
  • 简介Java程序的Shell脚本包装

    简介Java程序的Shell脚本包装

    这篇文章主要介绍了简介Java程序的Shell脚本包装,将Java运用于脚本程序当中,有时或许是个不错的主意~需要的朋友可以参考下
    2015-07-07

最新评论