matrix.boot.jdbc.orm.mybatis.converter.PageConvert Maven / Gradle / Ivy
package matrix.boot.jdbc.orm.mybatis.converter;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.base.CaseFormat;
import matrix.boot.common.dto.PageDto;
import matrix.boot.common.exception.ServiceException;
import matrix.boot.common.utils.StringUtil;
import matrix.boot.common.vo.PageVo;
import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
/**
* 分页请求参数转换器
*
* @author wangcheng
* date 2022/4/3
*/
public class PageConvert {
/**
* 参数数据转换
*
* @param queryVo 查询参数
* @param 类型格式
* @return 分页参数
*/
public static Page paramsConvert(PageVo queryVo, Class tClass) {
Page page = new Page<>(queryVo.getPage(), queryVo.getPageSize());
if (CollectionUtils.isEmpty(queryVo.getSorts())) {
return page;
}
queryVo.getSorts().forEach(sort -> {
if (StringUtil.isEmpty(sort.getProp())) {
return;
}
OrderItem orderItem = sort.getAsc()
? OrderItem.asc(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getProp()))
: OrderItem.desc(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getProp()));
page.addOrder(orderItem);
});
return page;
}
/**
* 结果数据转换
*
* @param data 原数据
* @param 新数据格式
* @param 老数据格式
* @return 新数据分页参数
*/
public static PageDto resultConvert(IPage data, Class tClass) {
PageDto result = new PageDto<>();
result.setCount(data.getTotal());
if (data.getTotal() > 0) {
result.setList(new ArrayList<>());
data.getRecords().forEach(item -> {
try {
T t = tClass.newInstance();
BeanUtils.copyProperties(item, t);
result.getList().add(t);
} catch (Exception e) {
throw new ServiceException(e);
}
});
}
return result;
}
}