1、本次更新
1.1 字典翻译添加二级缓存支持
原来版本在使用微服务的时候 只能把字典缓存放到redis中,遇到excel导出几千条数据这种场景就会比较慢。现在添加了二级缓存,并且预留了缓存刷新API,微服务模式下更方便和更高的性能都可以很好的照顾到。
1.2 外键/唯一键翻译和跨微服务翻译提供缓存和刷新缓存功能
原来版本中虽然提供了缓存能力,但是API不是很友好,现在改为通过给PO加注解就可以实现PO缓存。并且提供了全新的缓存管理器来刷新所有微服务缓存。
2、支持的ORM框架
如果您使用了以下ORM框架都可以集成本插件做翻译:
- Mybatis Plus
- JPA
- TK Mybatis
- BeetlSQL
3、组件介绍
表里我们经常存放字典码,外键 ,其他表的唯一键。给前端展示的时候要展示字典描述 (比如 gender 0 代表男),外键要显示 title/name (如 userid 1 要翻译为张三)。字典比较简单,很多项目都直接交给前端翻译,但是外键翻译是必须要后台来做的。最常见的做法就是 表 join ,这样又要自己写 sql 比较麻烦。使用 Easy Trans,只需要一个注解就可以搞定数据翻译。
支持的场景:
- 字典翻译 把 sex 0 翻译为男
- 普通外键翻译 / 唯一键翻译 框架使用 mp/jpa 能力自动帮你去执行 sql 根据外键查询 name/title 并且 set 到你的 vo 字段上
- 跨微服务翻译 比如 order (订单服务) user (用户服务) 是 2 个微服务,但是 order 要展示创建人姓名,表里只有 user id 可以使用跨微服务翻译
- 枚举翻译 把枚举中的汉字给到前端
Trans 注解:
程序员只需要掌握这一个注解就算熟练使用 EasyTrans 了,绝对不干让程序员掉更多头发的事情。
@Data @Builder @AllArgsConstructor @NoArgsConstructor //实现TransPojo 接口,代表这个类需要被翻译或者被当作翻译的数据源 public class Student implements TransPojo { // 字典翻译 ref为非必填 @Trans(type = TransType.DICTIONARY,key = "sex",ref = "sexName") private Integer sex; //这个字段可以不写,实现了TransPojo接口后有一个getTransMap方法,sexName可以让前端去transMap取 private String sexName; //SIMPLE 翻译,用于关联其他的表进行翻译 schoolName 为 School 的一个字段 @Trans(type = TransType.SIMPLE,target = School.class,fields = "schoolName") private String schoolId; //远程翻译,调用其他微服务的数据源进行翻译 @Trans(type = TransType.RPC,targetClassName = "com.fhs.test.pojo.School",fields = "schoolName",serviceName = "easyTrans",alias = "middle") private String middleSchoolId; // 枚举翻译,返回文科还是理科给前端 @Trans(type=TransType.ENUM,key = "desc") private StudentType studentType = StudentType.ARTS; public static enum StudentType{ ARTS("文科"), SCIENCES("理科"); private String desc; StudentType(String desc){ this.desc = desc; } } }
项目地址:https://gitee.com/fhs-opensource/easy_trans
文档地址:https://gitee.com/fhs-opensource/easy_trans/wikis
还没有评论,来说两句吧...