如何将处理器映射到 dto
how to map processor to dto
我正在构建一个 MealPlanner 应用程序,该应用程序根据用户偏好构建膳食菜单,我需要一些指导来设置 DTO 中的 2 个字段(字段名称:preferenceType、resultState)。
实体结构(名为膳食):
class Meal {
String itemName; //Such as Pizza, Sandwich
double portion; //such as 1.5
double cost; //such as 15.5, default currency is dollars
}
DTO 的结构:
class MealDTO {
//Identical to Meal
String itemName;
double portion;
double cost;
//Additional fields in DTO
String preferenceType; //FAT FREE, DAIRY FREE, VEGETARIAN
String resultState; //OPTIMAL, FEASIBLE, INFEASIBLE
}
Class 映射两个 类:
之间的值
public class FieldsMapper {
// MealDTO -> Meal
public Meal MealDtoToMeal(MealDTO mealDto) {
Meal meal = new Meal();
meal.setItemName(mealDto.getItemName());
return meal;
}
//Meal -> MealDTO
public MealDTO MealToMealDto(Meal meal) {
MealDTO mealDto = new MealDTO();
mealDto.setItemName(meal.getItemName());
mealDto.setPortion(meal.getPortion());
mealDto.setCost(meal.getCost());
return mealDto;
}
}
Please click here: MealPlanner full flow
这样,preferenceType 和 cost 的值就丢失了。
如何将 preferenceType、resultState 映射到 DTO?
(注意:Meal Planner 流程为步骤
- 将用户请求(仅包含itemName)映射到MealDTO(除itemName外的其他字段为空)。
- 使用 FieldsMapper 将 MealDTO 映射到膳食。
- 给第三方送餐,黑盒逻辑。此逻辑将 return 具有结构 {
, , , }
的地图
- 部分和成本映射到膳食实体字段部分,成本。
- 将 Meal 映射到 MealDTO 和 return DTO 对象。)
首先,我认为您应该为 resultState 和 preferenceType 字段使用枚举而不是字符串,因为它们具有固定值。
我认为您应该做的是创建另一个 DTO,其中包含 MealDTO 以及 resultState 和 preferenceType 字段,例如 UserMealDTO。所以像:
class UserMealDTO {
MealDTO meal;
MealPreference preferenceType;
ResultState resultState;
}
// Enums
public enum MealPreference {
FAT FREE, DAIRY FREE, VEGETARIAN;
}
public enum ResultState {
OPTIMAL, FEASIBLE, INFEASIBLE;
}
我正在构建一个 MealPlanner 应用程序,该应用程序根据用户偏好构建膳食菜单,我需要一些指导来设置 DTO 中的 2 个字段(字段名称:preferenceType、resultState)。
实体结构(名为膳食):
class Meal {
String itemName; //Such as Pizza, Sandwich
double portion; //such as 1.5
double cost; //such as 15.5, default currency is dollars
}
DTO 的结构:
class MealDTO {
//Identical to Meal
String itemName;
double portion;
double cost;
//Additional fields in DTO
String preferenceType; //FAT FREE, DAIRY FREE, VEGETARIAN
String resultState; //OPTIMAL, FEASIBLE, INFEASIBLE
}
Class 映射两个 类:
之间的值public class FieldsMapper {
// MealDTO -> Meal
public Meal MealDtoToMeal(MealDTO mealDto) {
Meal meal = new Meal();
meal.setItemName(mealDto.getItemName());
return meal;
}
//Meal -> MealDTO
public MealDTO MealToMealDto(Meal meal) {
MealDTO mealDto = new MealDTO();
mealDto.setItemName(meal.getItemName());
mealDto.setPortion(meal.getPortion());
mealDto.setCost(meal.getCost());
return mealDto;
}
}
Please click here: MealPlanner full flow
这样,preferenceType 和 cost 的值就丢失了。 如何将 preferenceType、resultState 映射到 DTO?
(注意:Meal Planner 流程为步骤
- 将用户请求(仅包含itemName)映射到MealDTO(除itemName外的其他字段为空)。
- 使用 FieldsMapper 将 MealDTO 映射到膳食。
- 给第三方送餐,黑盒逻辑。此逻辑将 return 具有结构 {
, , ,
} 的地图
- 部分和成本映射到膳食实体字段部分,成本。
- 将 Meal 映射到 MealDTO 和 return DTO 对象。)
首先,我认为您应该为 resultState 和 preferenceType 字段使用枚举而不是字符串,因为它们具有固定值。
我认为您应该做的是创建另一个 DTO,其中包含 MealDTO 以及 resultState 和 preferenceType 字段,例如 UserMealDTO。所以像:
class UserMealDTO {
MealDTO meal;
MealPreference preferenceType;
ResultState resultState;
}
// Enums
public enum MealPreference {
FAT FREE, DAIRY FREE, VEGETARIAN;
}
public enum ResultState {
OPTIMAL, FEASIBLE, INFEASIBLE;
}