lixing 1f29ecca34 初始化项目 3 anni fa
..
src 1f29ecca34 初始化项目 3 anni fa
README.md 1f29ecca34 初始化项目 3 anni fa
pom.xml 1f29ecca34 初始化项目 3 anni fa

README.md

apm-translate 翻译器组件

按配置规则,将对象中指定属性的值翻译为显示名称,并在对象上扩展属性并赋值为显示名称。

说明

  1. 可以通过@Transes和@Trans注解定义翻译元数据,注解在Controller、interface、impl、dao方法上,对方法结果进行翻译。
  2. 可以通过new TransMeta()定义翻译元数据,调用TranslatorHelper.translate(),在代码中进行翻译。
  3. TransMeta定义,根据type定义,支持两种翻译模式:
  4. TransType.DB:数据库翻译,默认为此值。
    • source:数据库表名、自定义翻译器名
    • parameter:原始对象中的待翻译字段。
    • result:查询结果字段名,查询多个结果以逗号分隔。默认值为name
    • condition:查询条件
    • target:回写到原始对象中的字段,默认为待翻译字段+ShowName,回写多个结果以逗号分隔。对象中无对应属性时会动态生成。
  5. TransType.SERVICE:自定义翻译器翻译。
    • parameter:原始对象中的待翻译字段。
    • source:自定义翻译器名
    • target:回写到原始对象中的字段,默认为待翻译字段+ShowName,回写多个结果以逗号分隔。对象中无对应属性时会动态生成。
    • isBatch:是否批量处理,默认值为false

代码示例

  1. 数据库翻译模式使用示例: @Trans(source = "person", parameter = "managers") public CommonResult<ResponseDepartmentItemVO> 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<String, Object> transBatch(List<String> parameter) {
          Map<String, Object> resultMap = new HashMap<>(16);
          return resultMap;
      }
      }
      
    • Controller代码

      @Trans(type = TransType.SERVICE, batch = true, source = "personNameTranslator", parameter = "managers", target = "managerShowName")
      public CommonResult<ResponseDepartmentItemVO> 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<ResponseDepartmentItemVO> queryDepartmentDetail(
           @Valid @RequestBody QueryDepartmentDetailDTO queryDepartmentDetailDTO) {
       Department department = departmentService.queryDepartmentDetail(queryDepartmentDetailDTO.getId());
       ResponseDepartmentItemVO responseDepartmentItemVO = ConvertDepartmentTool.INSTANCE.convert2ResponseItemDTO(department);
       return ResultHelper.single(responseDepartmentItemVO);
    }
    

最新变化