👉这是一个或许对你有用的社群
🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:
《项目实战(视频)》:从书中学,往事上“练”
《互联网高频面试题》:面朝简历学习,春暖花开
《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题
《精进 Java 学习指南》:系统学习,互联网主流技术栈
《必读 Java 源码专栏》:知其然,知其所以然
👉这是一个或许对你有用的开源项目
国产Star破10w的开源项目,前端包括管理后台、微信小程序,后端支持单体、微服务架构
RBAC权限、数据权限、SaaS多租户、商城、支付、工作流、大屏报表、ERP、CRM、AI大模型、IoT物联网等功能:
多模块:https://gitee.com/zhijiantianya/ruoyi-vue-pro
微服务:https://gitee.com/zhijiantianya/yudao-cloud
视频教程:https://doc.iocoder.cn
【国内首批】支持 JDK17/21+SpringBoot3、JDK8/11+Spring Boot2双版本
来源:一行代码的逆袭
一、它能解决什么?
二、5大翻译类型,覆盖全场景
三、快速接入:3步集成
四、高频场景
五、性能优化:开启缓存
六、总结
还在为ID转名称、字典码转文本、跨服务字段翻译写一堆冗余代码?
SpringBoot 开箱即用的数据翻译框架 —— Easy‑Trans,一个注解搞定所有翻译场景,少写30%以上业务代码。
一、它能解决什么?
日常开发高频痛点,它全能搞定:
根据用户ID自动查出用户名、手机号,不用手动关联查询
字典码 0/1 自动转成「男/女」
多个用户ID批量转成「张三,李四,王五」
枚举自动映射成前端展示文本
跨微服务ID一键翻译,不用手写RPC/Feign
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/ruoyi-vue-pro
视频教程:https://doc.iocoder.cn/video/
二、5大翻译类型,覆盖全场景
Easy‑Trans 内置5种翻译模式,业务场景全覆盖:
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/yudao-cloud
视频教程:https://doc.iocoder.cn/video/
三、快速接入:3步集成
1. 引入Maven依赖
<!-- 核心starter --> <dependency> <groupId>org.dromara</groupId> <artifactId>easy-trans-spring-boot-starter</artifactId> <version>2.3.1</version> </dependency> <!-- MyBatis-Plus扩展(用JPA则引入jpa-extend) --> <dependency> <groupId>org.dromara</groupId> <artifactId>easy-trans-mybatis-plus-extend</artifactId> <version>2.3.1</version> </dependency>yml配置
easy-trans: #启用redis缓存 如果不用redis请设置为false is-enable-redis:true #启用全局翻译(拦截所有responseBody进行自动翻译),如果对于性能要求高可关闭此配置,在方法上使用注解翻译 is-enable-global:true #是否启用平铺模式 翻译后的字段与原属性同级展示 is-enable-tile:false #字典缓存放到redis 微服务模式请开启 dict-use-redis:true #使用@RpcTrans来标记哪些类可以进行RPC翻译,默认为关闭,多团队协作推荐开启 is-enable-custom-rpc:true # ruoyi相关的框架请开启 is-enable-map-result:true # 反向翻译数据库类型 mysql db-type:mysql # Mybatis-plus 为 3.5.3.2版本以上的3.x 版本请设置为true mp-new:true2. 实体类标记(实现 TransPojo)
需要被翻译/作为数据源的实体,实现TransPojo接口:
@Data public class User implements TransPojo { private Long id; private String userName; private Integer gender; }四、高频场景
简单翻译(SIMPLE):ID→名称
设备表的userId自动翻译为用户名/手机号:
@Data public class Device implements TransPojo { private Long id; private String deviceName; // 自动关联User表,查userName、phone @Trans( type = TransType.SIMPLE, target = User.class, fields = {"userName", "phone"} ) private Long userId; }查询后设备数据后,翻译后的数据自动在transMap字段里返回前端。
字典翻译:码值→文本:
// 1.如果项目有字典表 ,可初始化缓存字典,如: @Autowired private DictionaryTransService dictService; Map<String, String> map = new HashMap<>(); map.put("0", "男"); map.put("1", "女"); dictService.refreshCache("gender", map);使用字典注解
@Trans(type = TransType.DICTIONARY, key = "gender") private Integer gender; //性别枚举翻译(ENUM):优雅映射
// 枚举定义 public enum SexEnum { MAN(1, "男"), WOMAN(0, "女"); private Integer code; private String desc; }实体使用
@Trans(type = TransType.ENUM, key = "desc") private SexEnum sexEnum;查询性别数据后,接口则返回:
跨微服务翻译(RPC)
例如订单服务中查用户名称:
@Trans( type = TransType.RPC, serviceName = "user-service", targetClassName = "cn.demo.user.pojo.User", fields = "userName" ) private Long userId;自定义数据源(AUTO_TRANS)
想自己写SQL/逻辑时使用:
// 1. 配置包扫描 easy-trans: autotrans: package: com.demo.service.** // 2. 业务类实现AutoTransable @AutoTrans(namespace = "user", fields = {"userName"}) @Service publicclass UserServiceImpl implements AutoTransable<User> { @Override public List<User> selectByIds(List<?> ids) { // 自定义查询逻辑 return userMapper.selectBatchIds(ids); } }五、性能优化:开启缓存
给数据源实体加@TransDefaultSett:
@TransDefaultSett( isUseCache = true, // 开启缓存 cacheSeconds = 600, // 过期时间 maxCache = 1000 // 最大缓存数 ) public class User implements TransPojo { ... }开启后只查主表,关联数据走缓存,接口性能大幅提升。
六、总结
Easy‑Trans 做到:
零侵入、少代码、高复用
单表/字典/枚举/跨服务全覆盖
批量查询+缓存优化,性能无忧
遇到ID转名称、码值转文本,一个@Trans直接搞定!
官网:
http://easy-trans.fhs-opensource.cn/
欢迎加入我的知识星球,全面提升技术能力。
👉 加入方式,“长按”或“扫描”下方二维码噢:
星球的内容包括:项目实战、面试招聘、源码解析、学习路线。
文章有帮助的话,在看,转发吧。 谢谢支持哟 (*^__^*)