refactor(admin-server): 重构管理员列表接口返回值类型
-将 IAdminService 接口中的 pageList 方法返回类型从 IPage<Admin> 改为 IPage<AdminVO> - 在 AdminServiceImpl 中实现新的 pageList 方法,使用 BeanConvertUtil 进行实体转换 - 新增 BeanConvertUtil工具类,用于实体类与 VO 之间的转换
This commit is contained in:
parent
821c7a3695
commit
0e9030f364
|
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||
import com.example.admin_server.common.query.IPageRequest;
|
||||
import com.example.admin_server.model.entity.Admin;
|
||||
import com.example.admin_server.model.query.AdminQuery;
|
||||
import com.example.admin_server.model.vo.AdminVO;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
|
@ -15,5 +16,5 @@ import com.example.admin_server.model.query.AdminQuery;
|
|||
* @since 2025-05-24
|
||||
*/
|
||||
public interface IAdminService extends IService<Admin> {
|
||||
IPage<Admin> pageList(IPageRequest pageRequest, AdminQuery query);
|
||||
IPage<AdminVO> pageList(IPageRequest pageRequest, AdminQuery query);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,9 @@ import com.example.admin_server.common.query.QueryWrapperBuilder;
|
|||
import com.example.admin_server.mapper.AdminMapper;
|
||||
import com.example.admin_server.model.entity.Admin;
|
||||
import com.example.admin_server.model.query.AdminQuery;
|
||||
import com.example.admin_server.model.vo.AdminVO;
|
||||
import com.example.admin_server.service.IAdminService;
|
||||
import com.example.admin_server.utils.BeanConvertUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
|
|
@ -23,11 +25,12 @@ import org.springframework.stereotype.Service;
|
|||
@Service
|
||||
public class AdminServiceImpl extends ServiceImpl<AdminMapper, Admin> implements IAdminService {
|
||||
|
||||
|
||||
@Override
|
||||
public IPage<Admin> pageList(IPageRequest pageRequest, AdminQuery query) {
|
||||
public IPage<AdminVO> pageList(IPageRequest pageRequest, AdminQuery query) {
|
||||
Page<Admin> page = pageRequest.toPage();
|
||||
QueryWrapper<Admin> wrapper = QueryWrapperBuilder.build(query, Admin.class);
|
||||
return this.page(page, wrapper);
|
||||
IPage<Admin> adminPage = this.page(page, wrapper);
|
||||
|
||||
return BeanConvertUtil.convertPage(adminPage, AdminVO::new);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
package com.example.admin_server.utils;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
/**
|
||||
* Bean转换工具类,用于实体类与VO之间的转换
|
||||
*
|
||||
* @author FallingCliff
|
||||
* @since 2025-05-24
|
||||
*/
|
||||
public class BeanConvertUtil {
|
||||
|
||||
/**
|
||||
* 将源对象转换为目标类型对象
|
||||
*
|
||||
* @param source 源对象
|
||||
* @param targetSupplier 目标对象提供者
|
||||
* @param <S> 源对象类型
|
||||
* @param <T> 目标对象类型
|
||||
* @return 转换后的目标对象
|
||||
*/
|
||||
public static <S, T> T convert(S source, Supplier<T> targetSupplier) {
|
||||
if (source == null) {
|
||||
return null;
|
||||
}
|
||||
T target = targetSupplier.get();
|
||||
BeanUtils.copyProperties(source, target);
|
||||
return target;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将源对象列表转换为目标类型对象列表
|
||||
*
|
||||
* @param sourceList 源对象列表
|
||||
* @param targetSupplier 目标对象提供者
|
||||
* @param <S> 源对象类型
|
||||
* @param <T> 目标对象类型
|
||||
* @return 转换后的目标对象列表
|
||||
*/
|
||||
public static <S, T> List<T> convertList(List<S> sourceList, Supplier<T> targetSupplier) {
|
||||
if (sourceList == null || sourceList.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<T> targetList = new ArrayList<>(sourceList.size());
|
||||
for (S source : sourceList) {
|
||||
targetList.add(convert(source, targetSupplier));
|
||||
}
|
||||
return targetList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将MyBatis-Plus分页对象转换为目标类型的分页对象
|
||||
*
|
||||
* @param page 源分页对象
|
||||
* @param targetSupplier 目标对象提供者
|
||||
* @param <S> 源对象类型
|
||||
* @param <T> 目标对象类型
|
||||
* @return 转换后的目标类型分页对象
|
||||
*/
|
||||
public static <S, T> IPage<T> convertPage(IPage<S> page, Supplier<T> targetSupplier) {
|
||||
if (page == null) {
|
||||
return null;
|
||||
}
|
||||
return page.convert(source -> convert(source, targetSupplier));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue