apm-translate 翻译器组件 ============ 按配置规则,将对象中指定属性的值翻译为显示名称,并在对象上扩展属性并赋值为显示名称。 说明 --------------- 1. 可以通过@Transes和@Trans注解定义翻译元数据,注解在Controller、interface、impl、dao方法上,对方法结果进行翻译。 2. 可以通过new TransMeta()定义翻译元数据,调用TranslatorHelper.translate(),在代码中进行翻译。 3. TransMeta定义,根据type定义,支持两种翻译模式: * TransType.DB:数据库翻译,默认为此值。 - source:数据库表名、自定义翻译器名 - parameter:原始对象中的待翻译字段。 - result:查询结果字段名,查询多个结果以逗号分隔。默认值为name - condition:查询条件 - target:回写到原始对象中的字段,默认为待翻译字段+ShowName,回写多个结果以逗号分隔。对象中无对应属性时会动态生成。 * TransType.SERVICE:自定义翻译器翻译。 - parameter:原始对象中的待翻译字段。 - source:自定义翻译器名 - target:回写到原始对象中的字段,默认为待翻译字段+ShowName,回写多个结果以逗号分隔。对象中无对应属性时会动态生成。 - isBatch:是否批量处理,默认值为false 代码示例 --------------- 1. 数据库翻译模式使用示例: ``` @Trans(source = "person", parameter = "managers") public CommonResult queryDepartmentDetail( @Valid @RequestBody QueryDepartmentDetailDTO queryDepartmentDetailDTO) { Department department = departmentService.queryDepartmentDetail(queryDepartmentDetailDTO.getId()); ResponseDepartmentItemVO responseDepartmentItemVO = ConvertDepartmentTool.INSTANCE.convert2ResponseItemDTO(department); return ResultHelper.single(responseDepartmentItemVO); } ``` 2. 自定义翻译模式使用示例: * 翻译器代码 ``` @Slf4j @Service public class PersonNameTranslator implements ITranslator { @Autowired private IPersonService personService; @Override public String trans(String parameter) { Person person = personService.queryPersonDetail(Long.valueOf(parameter)); return person.getName(); } @Override public Map transBatch(List parameter) { Map resultMap = new HashMap<>(16); return resultMap; } } ``` * Controller代码 ``` @Trans(type = TransType.SERVICE, batch = true, source = "personNameTranslator", parameter = "managers", target = "managerShowName") public CommonResult queryDepartmentDetail( @Valid @RequestBody QueryDepartmentDetailDTO queryDepartmentDetailDTO) { Department department = departmentService.queryDepartmentDetail(queryDepartmentDetailDTO.getId()); ResponseDepartmentItemVO responseDepartmentItemVO = ConvertDepartmentTool.INSTANCE.convert2ResponseItemDTO(department); return ResultHelper.single(responseDepartmentItemVO); } ``` 3. 多个翻译器同时使用使用示例: ``` @Transes({ @Trans(type = TransType.SERVICE, batch = true, source = "personNameTranslator", parameter = "managers", target = "managerShowName"), @Trans(source = "t_project", parameter = "projectIds", target = "projectsShowName")}) public CommonResult queryDepartmentDetail( @Valid @RequestBody QueryDepartmentDetailDTO queryDepartmentDetailDTO) { Department department = departmentService.queryDepartmentDetail(queryDepartmentDetailDTO.getId()); ResponseDepartmentItemVO responseDepartmentItemVO = ConvertDepartmentTool.INSTANCE.convert2ResponseItemDTO(department); return ResultHelper.single(responseDepartmentItemVO); } ``` 最新变化 ---------------