diff --git a/src/main/java/com/example/admin_server/service/IAdminService.java b/src/main/java/com/example/admin_server/service/IAdminService.java index 580461b..c1df10a 100644 --- a/src/main/java/com/example/admin_server/service/IAdminService.java +++ b/src/main/java/com/example/admin_server/service/IAdminService.java @@ -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; /** *

@@ -15,5 +16,5 @@ import com.example.admin_server.model.query.AdminQuery; * @since 2025-05-24 */ public interface IAdminService extends IService { - IPage pageList(IPageRequest pageRequest, AdminQuery query); + IPage pageList(IPageRequest pageRequest, AdminQuery query); } diff --git a/src/main/java/com/example/admin_server/service/impl/AdminServiceImpl.java b/src/main/java/com/example/admin_server/service/impl/AdminServiceImpl.java index 29cc22a..bce0694 100644 --- a/src/main/java/com/example/admin_server/service/impl/AdminServiceImpl.java +++ b/src/main/java/com/example/admin_server/service/impl/AdminServiceImpl.java @@ -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 implements IAdminService { - @Override - public IPage pageList(IPageRequest pageRequest, AdminQuery query) { + public IPage pageList(IPageRequest pageRequest, AdminQuery query) { Page page = pageRequest.toPage(); QueryWrapper wrapper = QueryWrapperBuilder.build(query, Admin.class); - return this.page(page, wrapper); + IPage adminPage = this.page(page, wrapper); + + return BeanConvertUtil.convertPage(adminPage, AdminVO::new); } } diff --git a/src/main/java/com/example/admin_server/utils/BeanConvertUtil.java b/src/main/java/com/example/admin_server/utils/BeanConvertUtil.java new file mode 100644 index 0000000..0ddfbe4 --- /dev/null +++ b/src/main/java/com/example/admin_server/utils/BeanConvertUtil.java @@ -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 源对象类型 + * @param 目标对象类型 + * @return 转换后的目标对象 + */ + public static T convert(S source, Supplier targetSupplier) { + if (source == null) { + return null; + } + T target = targetSupplier.get(); + BeanUtils.copyProperties(source, target); + return target; + } + + /** + * 将源对象列表转换为目标类型对象列表 + * + * @param sourceList 源对象列表 + * @param targetSupplier 目标对象提供者 + * @param 源对象类型 + * @param 目标对象类型 + * @return 转换后的目标对象列表 + */ + public static List convertList(List sourceList, Supplier targetSupplier) { + if (sourceList == null || sourceList.isEmpty()) { + return new ArrayList<>(); + } + List targetList = new ArrayList<>(sourceList.size()); + for (S source : sourceList) { + targetList.add(convert(source, targetSupplier)); + } + return targetList; + } + + /** + * 将MyBatis-Plus分页对象转换为目标类型的分页对象 + * + * @param page 源分页对象 + * @param targetSupplier 目标对象提供者 + * @param 源对象类型 + * @param 目标对象类型 + * @return 转换后的目标类型分页对象 + */ + public static IPage convertPage(IPage page, Supplier targetSupplier) { + if (page == null) { + return null; + } + return page.convert(source -> convert(source, targetSupplier)); + } +}