Skip to content
On this page

1、配置讲解

  • easy-trans.is-enable-tile:true 开启平铺模式(transMap的key平铺到和vo一个级别)
  • easy-trans.is-enable-map-result 开启map自动翻译(ruoyi的ajaxResult 可以使用此配置)
  • easy-trans.dict-use-redis 字典缓存是否放到redis中 做二级缓存,微服务模式推荐开启
  • easy-trans.is-enable-global 开启responseBody 全局拦截后自动翻译
  • easy-trans.is-enable-redis 开启redis支持 微服务模式推荐使用redis
  • easy-trans.db-type 数据库类型,反向翻译时使用,目前仅支持mysql

2、不同的翻译类型

2.1 类型如何选择

@Trans(type=?) 问号应该怎么写?

  • 字典码翻译 TransType.DICTIONARY
  • 其他表主键/唯一键翻译 TransType.SIMPLE
  • 其他表主键/唯一键翻译 但是 但是 这个表在其他的微服务上 TransType.RPC
  • 自己写代码做翻译的数据源 TransType.AUTO_TRANS

2.2 实战

java

// 字典翻译 
@Trans(type = TransType.DICTIONARY,key = "sex")
private Integer sex;

//SIMPLE 使用schoolId 获取 schoolName
@Trans(type = TransType.SIMPLE,target = School.class,fields = "schoolName")
private String schoolId;

//RPC 使用其他微服务的school表的id获取 schoolName 并且指定别名 
@Trans(type = TransType.RPC,targetClassName = "com.fhs.test.pojo.School",fields = "schoolName",serviceName = "easyTrans",alias = "middle")
private String middleSchoolId;

@Trans的详细使用请点击左侧@trans注解详解章节

3、自动翻译和手动翻译

  • easy-trans.is-enable-global 设置为true的时候,所有的responseBody框架都会拦截尝试翻译,支持嵌套。称之为自动翻译。
  • 可以注入 TransService 然后调用 transOne或者transBatch 来翻译一个或者多对象,称之为手动翻译,手动翻译不支持平铺。
  • 使用@TransMethodResult 标记方法,框架会自动翻译方法return的值 基于AOP实现。
  • 开启全局翻译后 如果某个controller的返回值不需要返回结果可以 添加@IgnoreTrans 到方法上
java
//手动翻译
@Autowired
private TransService transService;
transService.transOne(school);
transService.transBatch(schoolList);

//标记方法结果翻译
@TransMethodResult
public Student getStudent(){
        Student student = new Student();
        student.setTeacherId(1);
        return student;
}

//忽略翻译
@IgnoreTrans
@GetMapping("/one")
public HttpResult<Student> student(){
	 return HttpResult.success(new Student());
}

4、多个翻译

多个翻译指的是字段的value 是多个,比如List,Set,数组,逗号分隔的字符串等等。
字典,RPC,SIMPLE 均支持多个翻译,不需要单独写什么,框架会判断如果value.toString 后带逗号就会走多个翻译的逻辑。

5、忽略翻译

如果是返回tree格式数据的接口,强烈建议手动翻译,然后使用忽略翻译注解忽略此接口的自动翻译,忽略翻译可在controller的方法上标记@IgnoreTrans注解。

6、参考文章

此文章包含了每一种翻译的常规用法,可为入门参考使用:
https://blog.csdn.net/csdn_0921/article/details/128380310

Apache 2.0 Licensed