服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - mybatis-plus 分页类型转换工具类

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

2022-09-12 14:59洛阳泰山 Java教程

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

前言

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

代码示例

?
1
2
3
4
5
6
7
8
9
10
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依赖

?
1
2
3
4
5
6
<!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

 分页转换工具如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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 分页工具类

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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层中分页方法的使用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 分页工具类内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_40986713/article/details/123396514

延伸 · 阅读

精彩推荐