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

【SpringBoot3】使用Easy-Trans做字典翻译 在项目中经常会有一些根据id从某个表中查name或者从数据字典表中根据code查name的场景。 Easy-Trans 可以非常优雅的实现以上需求,可以有效减少字段冗余。 阅读详情

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

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

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

国产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/


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

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

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

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
继电器的选型规范 触点是继电器中最重要的结构件,触点的使用寿命受触点材料、触点上的电压及电流值(特别是接通时及断开时的电压、电流波形)、负载种类、切换频率、环境情况、接触形式、触点回跳现象等的影响,触点失效多以触点的材料转移、粘连、异常消耗、接触电阻增大等故障现象出现,使用时需要注意。为了稳定工作, DC 型继电器的线圈两端所加电压推荐使用波纹变化率小于±5%的线圈额定电压,否则继电器会工作不稳定,引起触点的粘接或异常损耗,特别是在继电器的驱动电路上连接有电动机、螺线管、变压器等器件时,这种情况更为明显。 阅读详情

相关推荐

Android13配置selinux让system应用可读sys,proc,SN号

Android13预置的system应用,需要读/sys, /proc目录,读(SN)serial number号, 需要修改selinux配置,否则会报avc错.其修改方法会比Android11复杂一些.。

zmlovelx(帅得不敢出门 程序员群31843264) 2655

springboot 字典翻译

springboot字典翻译

Coco_chun的博客 2097

Vue3 + OpenLayers 开发指南(一) - 环境搭建与基础配置

本文详细介绍了如何从零开始搭建Vue3与OpenLayers的集成开发环境。通过项目初始化、核心依赖安装、目录结构规划及基础配置,手把手引导开发者创建一个结构清晰、可维护的现代化WebGIS应用骨架,为后续添加地图图层和交互功能奠定坚实基础。

weixin_28049429的博客 341

springboot项目 字典/枚举翻译 终极解决方案 AOP+自定义注解+递归实体字段+实体动态三级缓存+责任链+多种转换方式

字典,即在存储介质中进行存储时,为了避免业务上对其名称的调整,所以存储其编码,在进行展示时,将其中文展示出来.我了解到,早期还有中可能是: 存储中文时,有编码问题. 不过我觉得这种说法无法成立,如果面向的用户是中国用户,系统就不可能不存中文.我的这种实现方式,不仅帮组实现了字典翻译的业务, 还用到了设计模式和一些技术,二次拓展方便,值得一学.

ql_7256的博客 2550

基于反相器的超声波发生和气泡检测电路

本文主要介绍了关于超声波的两种电路——基于反相器的振荡电路和基于逻辑们的气泡检测电路

xehagy的博客 1960

四、Burpsuite工具之proxy模块详解-intercept功能

过了一个年,感觉好久都没有更新了,今天就从burpsuite的更新开始吧。前面已经说过了burpsuite的安装和proxy代理的配置,今天说一下proxy模块中非常有用的intercept功能。intercept是拦截的意思,在这里相当于拦截请求,可以实时的对请求进行拦截,然后请求参数的篡改,再把请求放通,从而达到实时修改请求的功能intercept的总体界面如下图所示其中下图红框中是可以修改请求目标的相关信息。

SmileAssassn的博客 1663

SpringBoot自定义注解+AOP处理数据字典自动翻译

在日常开发中系统字典是必不可少的东西,一般业务表里只存储字段的code,但是在查询的时候需要回显字典的Name的值

李大胖 2907

构建栅格地图matlab代码

1 使用MATLAB实现地图栅格化 效果图如下所示 图1 ...

qq_59747472的博客 4519

springboot之数据翻译组件:支持枚举、字典表、外键翻译、对象翻译、属性脱敏

本文介绍了SpringBoot项目中常见的数据翻译实现方案,主要包括枚举翻译、字典表翻译、SQL查询翻译等多种方式。核心内容包括:1)使用@DictType、@TransEnum、@TransDict等注解定义和实现翻译逻辑;2)通过@TransSQL支持动态SQL查询翻译;3)自定义TransDictHandler处理翻译优先级;4)提供两种翻译调用方式(手动调用和全局自动处理)。同时介绍了数据脱敏注解@JsonSensitive的使用。该方案可有效简化开发中的多数据源翻译需求,支持枚举、数据库表、远程调

mxskymx的专栏 2912

eCognition易康操作教程(一):如何利用eCognition易康软件进行影像分割之棋盘分割、四叉树分割、光谱差异分割

进程执行完成后,植被覆盖区域与裸地区域合并了。第三步:清除分割结果,点击“Image Objects”菜单栏,点击“Delete Level(s)”,选中“ResultLevel1”,点击”ok”删除棋盘分割结果。四叉树分割之后,有的正方形大一些,有的正方形小一些,大说明该区域的光谱特性更加均一,而小说明不太均一。Leve:选择运行算法的矢量层名称,这里选择四叉树分割算法得到的矢量层“ResultLevel2”。Image Layer weights:图层权重,这里设置为“1,1,1,1”。

蒹葭苍苍 4609

canoe安装完成开启之后因为VectorDeviceParams30_64.dll报错崩溃打不开...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1082

SpringBoot字典翻译

SpringBoot字典翻译

wenshuhao888999的博客 888

面向企业级应用的 SAP UI5 troubleshooting 全景指南:从日志与调试到性能与可测试性

本指南系统化介绍了SAP UI5应用排错的完整流程和工具链。从基础的浏览器开发者工具使用,到SAP UI5专用调试工具(Technical Information Dialog、Support Assistant、Diagnostics Window),再到性能优化和日志管理,提供了一套工程化的解决方案。重点推荐组合使用UI5 Inspector扩展、Test Recorder测试工具以及性能测量模块,并强调将常见问题整理成团队知识库。通过制度化的排错步骤和工具组合,开发者可以快速定位、复现和修复问题,将调

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 286

SpringBoot3接口优化:一行注解搞定字典与关联字段翻译,告别冗余循环

这款轻量开源翻译工具,完美适配SpringBoot3生态,精准解决后端字段翻译核心痛点,集成简单、零业务侵入、无明显性能损耗,彻底替代手写冗余循环代码。从字典翻译、跨表关联到枚举翻译,覆盖绝大多数后端业务场景,新手可直接照搬配置快速上手,老项目也能平滑迭代改造,是提升接口开发效率、优化代码规范的实用工具,强烈建议纳入日常开发工具箱。

聚焦Java后端技术以及Vue前端技术,分享实操方案与成长感悟,深挖实用工具与优质开源项目,解锁开发提效秘籍。 419

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

革命性的Java字典翻译解决方案:让数据展示更智能

Java字典自动翻译项目:简化编码与展示分离的优雅方案 基于Spring Boot和Jackson,通过@DictField注解实现字典自动翻译,消除业务层冗余代码。支持枚举和数据库两种字典类型,可配置缓存策略(如enableCache和cacheExpire)。核心通过自定义序列化器DictFieldSerializer动态生成翻译字段(如statusName),并内置高性能缓存机制。开发者只需简单注解实体类字段,即可自动完成编码值到文本的转换,显著提升代码可维护性。适用于状态码、性别等常见字典场景,兼顾

平凡的梦 686

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

3分钟掌握Easy-Trans:注解驱动的数据翻译革命

在数据驱动的现代应用开发中,你是否还在为繁琐的数据翻译工作而头疼?当用户看到"sex=1"而不是"男","userId=1001"而不是真实姓名时,这种糟糕的用户体验往往源于开发者在数据展示环节的重复劳动。今天,让我们一起探索Easy-Trans数据翻译框架如何用注解驱动的设计理念,彻底改变你的开发方式。 ## 为什么你的应用需要数据翻译框架? 想象这样的场景:电商订单页面需要显示用户姓名、商

gitblog_00588的博客 341

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SpringBoot2+Vue3家装服务管理系统实战:从数据模型到部署全解析

在企业管理类项目开发中,前后端分离架构已成为主流选择。SpringBoot2凭借成熟的生态和高效开发体验,搭配Vue3的组件化能力,成为构建后台管理系统的经典组合。本文将回顾一套家装服务管理系统从数据模型设计到部署上线的全过程,涵盖RBAC权限模型、订单状态机、MyBatis-Plus使用技巧、JWT认证、动态路由以及MySQL8.0的实践要点。内容以工程视角展开,帮助读者理解如何将通用技术栈落地到行业业务中,并给出二次开发建议与高频踩坑清单。无论你是在探索管理系统开发方案,还是需要快速搭建一个业务后台,都

优快云头条 271

基于SpringBoot+Vue3的智慧养老健康管理系统开发实战

前后端分离架构是现代Web应用开发的主流模式,它通过解耦前端展示与后端服务提升开发效率与系统可维护性。SpringBoot作为后端开发的事实标准,凭借自动配置与生态整合能力,极大简化了企业级应用搭建流程;Vue3则以其组合式API和响应式系统,为复杂交互界面提供流畅开发体验;而MyBatis以XML与注解双形态支撑灵活的数据持久层操作,MySQL则负责业务数据的可靠存储。这一技术组合广泛应用于各类管理信息系统,尤其在智慧养老、健康管理领域,可支撑健康档案、数据监测、服务工单与预警提醒等核心业务。围绕社区居家

weixin_33910460的博客 360

SpringBoot+Vue+MySQL实现医院智能排班系统:从需求到部署全解析

业务管理系统的核心挑战往往不在技术栈本身,而在于将现实场景中的复杂约束转化为可执行的规则。以医院医护排班为例,系统需处理连续时间链、资质搭配、节假日均衡及调班审批等硬性要求,这促使开发者深入设计数据库表结构与排班算法。借助SpringBoot的分层架构、Vue的日历交互组件及MySQL的关系模型,可构建一个规则驱动、支持冲突检测与调班流程闭环的排班平台。此类系统不仅提升护士长排班效率与公平性,也常作为毕业设计及工程实践课题,完整覆盖需求分析、数据库设计、前后端联调和部署交付。本文围绕该场景,从数据库设计到排

weixin_33898876的博客 469

字典 | springboot 返回数据字典翻译

1.前言 在处理完数据返回前端时,通常需要做字典翻译,此时就需要一个好用的处理工具,但是依然不方便,对此,再次封装了一次。 原理 在接口返回时拦截 --- 反射获取对应字典信息 -- 查询字典值 --- 再次塞入对象里面 --- 返回信息 2.代码 字典类型处理 import java.lang.annotation.*; /** * 字典类型处理 拦截 * <p>常用返回类型处理,不进行四层深层处理</p> * * @author wbw * @d

qq_41497111的博客 4733

适用于Spring Boot的数据字典翻译Starter

适用于Spring Boot的字典翻译扩展 在常见的web应用中,有很多数据库字段会使用字典值,但是在数据查询时,我们需要将存储的字典值转换成对应的字典标签(value>>name),用于展示给用户。常见的转换方式为从数据库查询、逻辑包装等,这样的字段一旦有很多的话,就非常的不方便,所以我就做了这个扩展项目。 总述 我做的是一个基于Spring Boot的扩展starter,项目代码已经上传到github:dict-traslate-starter ,这篇文档先说一下用法然后讲一下设计思路与

张二狗的博客 3095

SpringBoot项目:字典翻译,接口加密,数据脱敏等

在几乎所有SpringBoot项目中都会面临:字典翻译,接口数据加密,数据脱敏的问题。在每个接口中单独的解决会非常繁琐,因此接下来介绍一下怎么通过注解快速解决这些问题。

today_liqiu的博客 1364

推荐一个创新高效的开源数据翻译工具,一个注解搞定数据翻译,减少30%的SQL代码量

作为一个高效的数据翻译工具,通过注解的方式简化了数据与文本之间的转换,大幅减少了SQL代码量,提高了开发效率。它不仅支持多种ORM框架和数据源,还具备跨微服务翻译的能力,非常适合现代微服务架构下的开发需求。

m0_68103752的博客 1583

SpringBoot 自定义字典翻译组件

本来想在项目里直接用Easy-Trans来做字典翻译,用的时候发现,这个组件不支持原生的mybatis.使用方式,直接在实体字段上用注解 @DictTrans。于是直接自己写了一个。废话不多说,直接上代码。我这里是直接从redis中取出来进行字典进行翻译。targetField是翻译后映射的字段。dictKey是对应的字典的key。

Java 璐到底 270

SpringBoot 使用 AOP校验入参字段(DictVerify)和翻译响应字段(Dict)

创建AOP切面 在方法上添加注解 在需要校验字段或者关联表数据是否存在的方法上添加注解,一般是新增和修改需要。 在需要校验的字段上添加注解 校验关联表是否存在数据 dicTable=表名, dicCode = “关联字段名”, dicText = “需要展示的字段名”,dicMsg = “用于前端的提示消息” 校验字典表是否存在数据 这里的dicCode就是字典表中字典类型 翻译响应字段 创建 Dict 注解 创建 Dict AOP切面 在需要翻译的字段上添加注解 需要关联表翻译的 dicTable=

Java老兵的后端进阶与AI前沿探索之路。 927

springboot通过aop实现自定义字典翻译注解

【代码】springboot通过aop实现自定义字典翻译注解。

cdicon的博客 1038
上一篇: AI时代程序员的五种流派
下一篇: 面试官:“你ClaudeCode都没用过吗?”,我怼回去:“就没用过又怎么了?”
公众号-芋道源码
博客等级 码龄10年 1634粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值