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

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

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

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

国产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双版本 

来源:一行代码的逆袭


还在为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/


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

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

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

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值