news 2026/4/19 10:27:43

一个注解搞定 SpringBoot 数据、枚举、字典翻译!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一个注解搞定 SpringBoot 数据、枚举、字典翻译!

👉这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:

  • 《项目实战(视频)》:从书中学,往事上“练”

  • 《互联网高频面试题》:面朝简历学习,春暖花开

  • 《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题

  • 《精进 Java 学习指南》:系统学习,互联网主流技术栈

  • 《必读 Java 源码专栏》:知其然,知其所以然

👉这是一个或许对你有用的开源项目

国产Star破10w的开源项目,前端包括管理后台、微信小程序,后端支持单体、微服务架构

RBAC权限、数据权限、SaaS多租户、商城、支付、工作流、大屏报表、ERP、CRMAI大模型、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: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/


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

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

文章有帮助的话,在看,转发吧。 谢谢支持哟 (*^__^*)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 10:27:28

如何解决Windows驱动管理难题:DriverStore Explorer完整实用指南

如何解决Windows驱动管理难题&#xff1a;DriverStore Explorer完整实用指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Windows驱动管理是每个用户都会遇到的问题&#xff0c;随着…

作者头像 李华
网站建设 2026/4/19 10:22:23

JDK1.8环境配置与多版本管理:Phi-3-mini-gguf解决兼容性问题

JDK1.8环境配置与多版本管理&#xff1a;Phi-3-mini-gguf解决兼容性问题 1. 为什么需要关注JDK版本问题 Java开发中&#xff0c;JDK版本问题就像手机系统升级一样常见。你可能遇到过这样的情况&#xff1a;同事的代码在你电脑上跑不起来&#xff0c;或者一个老项目在新电脑上…

作者头像 李华
网站建设 2026/4/19 10:20:15

Cilium/eBPF:下一代网络可观测性与安全

文章目录 一、iptables 在大规模集群里的天花板 二、eBPF 是什么:内核里的沙箱 2.1 从 BPF 到 eBPF 2.2 验证器:沙箱的核心 三、Cilium 数据面:怎么用 eBPF 替代 kube-proxy 3.1 三个挂载点 3.2 kube-proxy 的 iptables vs Cilium 的 eBPF 四、bpftrace:自定义网络诊断工具…

作者头像 李华
网站建设 2026/4/19 10:08:02

不止是点灯:用树莓派GPIO控制探索智能家居的起点(Python实战)

从LED到智能家居&#xff1a;树莓派GPIO控制的Python实战进阶指南 第一次看到树莓派上那个小小的LED灯闪烁时&#xff0c;我意识到这不仅仅是一个电子实验——这是打开智能家居世界大门的钥匙。作为一位从点亮第一个LED开始&#xff0c;最终构建了整套家庭自动化系统的开发者&a…

作者头像 李华