简介

开发中会经常遇到这样的场景:比如在成绩表有一个student_id,如果我要查看成绩列表需要学生的名称,一般写法就是使用join,现在大部分ORM框架对于表关联支持并不是很友好,所以很多时候我们都要自己写SQL去实现。翻译服务就是为了简化这种查询的写法,使用翻译服务,您只需要单表查询成绩表即可,然后调用翻译服务的transMore方法即可。

demo

如下这样写即可实现根据parkId翻译parkName

  1. @TransTypes(types = {"pagex"})
  2. public class PayCarcome extends BaseDO<PayCarcome> implements Syncable {
  3. //DO中给需要翻译的字段加注解
  4. @Trans(type="pagex",key="parking")
  5. private String parkId;
  6. }
  7. //注入翻译服务
  8. @Autowired
  9. private TransService transService;
  10. //使用翻译服务翻译结果
  11. List<PayCarcome> comrecords = carcomeService.findCarComeListByPlatNumberLike(payCarcome.getPlateNumber(),null);
  12. transService.transMore(comrecords);
  13. //翻译后每个PayCarcome.getTransMap 中就已经有翻译的结果了。

fhs2.0对于翻译服务进行了大升级,除了1.x就支持的字典翻译外,还提供了autotrans服务.

1 什么叫autotrans 所有的翻译,是需要数据源的,数据源一般是一个service,提供查询所有数据的方法,然后框架根据注解来确定每个从DB查询出来的DO 哪个字段是主键,哪个字段是翻译结果.在1.x版本上,比如用户翻译,组织机构翻译,都需要单独的 用户翻译实现类,组织机构翻译实现类来完成这些事情.在2.x上,只需要给userservice实现类加上autotrans的注解即可.

输入图片说明

然后在其他的POJO中加上用户的翻译注解.

输入图片说明

  1. 这样即可实现userid 2 userName的转换了.

2 实现原理讲解

  1. 参考我csdn中的文章吧 https://blog.csdn.net/shuaizai88/article/details/105250088