👉 这是一个或许对你有用的社群
🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:
《项目实战(视频)》:从书中学,往事上“练”
《互联网高频面试题》:面朝简历学习,春暖花开
《架构 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双版本
还在为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:true
2. 实体类标记(实现 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/
欢迎加入我的知识星球,全面提升技术能力。
👉 加入方式,“长按”或“扫描”下方二维码噢:

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。





文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)

1017

被折叠的 条评论
为什么被折叠?



