Easy_Trans轻松让你的项目减少30%SQL代码量

news2024/11/17 23:26:44

什么是Easy_Trans

Easy Trans是一款用于做数据翻译的代码辅助插件,利用MyBatis Plus/JPA/BeetlSQL 等ORM框架的能力自动查表,让开发者可以快速的把ID/字典码 翻译为前端需要展示的数据。

easy trans的优点

功能多样

  1. 缓存支持

  2. 跨微服务翻译支持(User和Order 是2个不同微服务,order里面有userId 需要userName)

  3. 国际化支持

  4. 多种ORM框架适配

  5. 多数据源支持

  6. 集合支持(userIds [1,2,3] 翻译为张三,李四,王五)

  7. 反向翻译支持 男->gender 0 张三->user id id 陕西分公司 财务部 -> org_id 1

适用多种场景

  1. 我拥有一个ID,但需要向客户展示他的职位/姓名,但又不想手动执行表关联查询。

  2. 我有一个字典码"sex"和对应的字典值0,我希望将其翻译为"男",以便展示给客户。

  3. 我有一组用户ID,例如1、2、3,我希望将它们展示为"张三"、"李四"、"王五",供客户查看。

  4. 我的枚举中包含一个"title"字段,我希望向前端展示该字段的值,以供客户查看。

  5. 我拥有一个唯一键(例如手机号码、身份证号码),但需要向客户展示他们的职位/姓名,而又不想手动执行表关联查询。

配置简单

对于springboot项目,只需要引入 easy-trans 的starter

<!-- 目前最新版本就是 2.2.1-M1 -->
<dependency>
    <groupId>com.fhs-opensource</groupId>
    <artifactId>easy-trans-spring-boot-starter</artifactId>
    <version>2.2.1-M1</version>
</dependency>

然后引入项目中对应的orm框架的扩展,以mybatisPlus为例

<dependency>
    <groupId>com.fhs-opensource</groupId>
    <artifactId>easy-trans-mybatis-plus-extend</artifactId>
    <version>2.2.1-M1</version>
</dependency>

然后 yml 配置

# 翻译配置
easy-trans:
  # 平铺模式
  is-enable-tile: true
  # 开启redis支持
  is-enable-redis: true
  # 开启responseBody 全局拦截后自动翻译
  is-enable-global: true
  # 字典缓存是否放到redis中 做二级缓存,微服务模式推荐开启
  dict-use-redis: true
  db-type: mysql

灵活易用

easy trans 支持五种类型

1、字典翻译(TransType.DICTIONARY)

需要使用者把字典信息刷新到DictionaryTransService 中进行缓存,使用字典翻译的时候取缓存数据源

2、简单翻译(TransType.SIMPLE)

比如有userId需要userName或者userPo给前端,原理是组件使用MybatisPlus/JPA的API自动进行查询,把结果放到transMap中。

3、跨微服务翻译(TransType.RPC)

比如订单和用户是2个微服务,但是我要在订单详情里展示订单的创建人的用户名,需要用到RP翻译,原理是订单微服务使用restTemplate调用用户服务的一个统一的接口,把需要翻译的id传过去,然后用户微服务使用MybatisPlus/JPA的API自动进行查询把结果给订单微服务,然后订单微服务拿到数据后进行翻译,当然使用者只是需要一个注解,这些事情都是由组件自动完成的。

4、AutoTrans(TransType.AUTO)

还是id翻译name场景,但是使用者如果想组件调用自己写的方法而不通过Mybatis Plus/JPA 的API进行数据查询,就可以使用AutoTrans

5、枚举翻译(TransType.ENUM)

比如我要把SEX.BOY 翻译为男,可以用枚举翻译。

详细参考官网:

@Trans注解详解 · EasyTrans官方文档 · 看云

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/654720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝奥声核心技术分享 ——无线单火控制技术

1.技术背景 无线单火控制技术指基于对目标场景状态变化的协同感知而获得触发响应并进行智能决策&#xff0c;属于蓝奥声核心技术--边缘协同感知(EICS&#xff09;技术的关键支撑性技术之一。该项技术属于物联网边缘域的无线通信与智能控制技术领域。 对于不同智能应用场景&am…

安庆师范大学之计科-数据结构MOOC期末考试

单选 5分/题&#xff0c;共30题 1、在长度为n的顺序表的第i个位置上插入一个元素&#xff0c;i的合理取值范围是&#xff08; &#xff09;。 A.1≤i≤n B.任意正整数 C.i≥0 D.1≤i≤n1 正确答案&#xff1a;D 2‏、已知L是带表头结点单链表的头指针&#xff0c;摘除…

kubernetes operator解析

您是否想过站点可靠性工程 (SRE) 团队如何有效地成功管理复杂的应用程序&#xff1f; 在 Kubernetes 生态中&#xff0c;只有一个答案&#xff1a;Kubernetes Operators&#xff01; 在本文中&#xff0c;我们将研究它们是什么以及它们是如何工作的。 Kubernetes Operator 概念…

STM32 软件模拟SPI

STM32 软件模拟SPI 前言关于 SPISPI 协议软件模拟实现Driver_SPI.hDriver_SPI.c 前言 STM32库&#xff1a;标准函数库 测试环境&#xff1a;STM32F103系列 关于 SPI SPI 协议 SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外设接口&#xff09;是由摩托罗拉…

Python ChatGPT API 新增的函数调用功能演示

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 OpenAI 重磅更新&#xff0c;API 添加函数调用能力&#xff0c;能处理更长上下文&#xff0c;价格又有所降低 … 知乎讨论&#xff1a;https://www.zh…

【超详细教学】Python制作迷宫小游戏教程

文章目录 前言1.首先确定迷宫的大小2. 定义迷宫的墙壁和通道3.定义迷宫的起点和终点4.定义迷宫的方向5. 生成一个空的迷宫6. 在迷宫中随机选择一个起点和终点7. 在迷宫中随机选择一个方向8. 检查一个位置是否在迷宫内9. 检查一个位置是否是墙壁10. 检查一个位置是否是通道11. 检…

工程师卓越之旅:技术文档怎么写

0.意义和价值 当前信息共享长期技术知识传承加深作者的理解和思考交付包括代码和技术文档 1.准备阶段 明确文档需求、受众和内容范围 2.调研阶段 对比有代表性的同类或相似的技术文档&#xff0c;建立大致框架收集相关信息&#xff0c;分析验证进行技术决策在文档中将每个…

HttpServletRequest对象中获取客户端IP地址

什么是HttpServletRequest对象 HttpServletRequest对象是Java Servlet规范中定义的一种接口&#xff0c;它封装了客户端请求的所有信息&#xff0c;例如请求头、请求参数、请求方法、请求URL等。在Java Web开发中&#xff0c;HttpServletRequest对象非常常用&#xff0c;可以用…

关于Java SSM框架的面试题

一、Spring面试题 1、Spring 在ssm中起什么作用&#xff1f; Spring&#xff1a;轻量级框架作用&#xff1a;Bean工厂&#xff0c;用来管理Bean的生命周期和框架集成。两大核心&#xff1a;1、IOC/DI(控制反转/依赖注入) &#xff1a;把dao依赖注入到service层&#xff0c;se…

程序替换原理

文章目录 一、程序替换 一、程序替换 程序替换用于将当前进程的用户空间的代码和数据全部替换为新程序的代码和数据&#xff0c;程序替换不会创建新进程&#xff0c;而是用当前进程执行新程序的代码&#xff0c;fork 创建子进程后&#xff0c;子进程默认执行的是父进程的代码&…

信创-大数据平台CPU架构支持

一、CDH和HDP、CDP CDP数据中心类似于CDH和HDP,直接安装在硬件服务器上,目前支持市面上主流的X86服务器,包括国内海光服务器&#xff0c; CDH不支持ARM 以上两种大数据平台都仅支持x86架构&#xff0c;早在几年期RedHat联手cloudera公司发表声明将推出64位ARM版&#xff0c;据…

【备战秋招】每日一题:4月29日美团春招第一题:题面+题目思路 + C++/python/js/Go/java带注释

为了更好的阅读体检&#xff0c;为了更好的阅读体检&#xff0c;&#xff0c;可以查看我的算法学习博客第一题-选修课 在线评测链接:P1266 题目内容 某大学一共有 n 门课程&#xff0c;编号为 1 ~ n &#xff0c; m 个学院&#xff0c;编号为1 ~ m 。最近开学季&#xff0c;…

剑指 Offer 53 - II: 0~n-1中缺失的数字

看到这道题的第一反应就是二分查找&#xff0c;由于是递增的所以二分查找所需的时间很短 &#xff0c;设置一个左&#xff0c;一个右&#xff0c;一个中间&#xff0c;如果判断吧不同需要想下前面是否一样&#xff0c;如果是那么就找到&#xff0c;不是再继续二分查找。 我的思…

【redis】redis的5种数据结构及其底层实现原理

文章目录 redis中的数据结构redis数据结构底层实现stringlisthashsetintset字典 zset跳表插入删除过程 redis中的数据结构 Redis支持五种数据类型&#xff1a;string&#xff08;字符串&#xff09;&#xff0c;hash&#xff08;哈希&#xff09;&#xff0c;list&#xff08;…

小波变换之pycwt (python)

小波变换之pycwt PyCWT是用于连续小波谱分析的Python模块&#xff0c;它包括小波变换和FFT算法统计分析的常规操作的集合。此外&#xff0c;该模块还包括交叉小波变换、小波相干性测试和样例脚本。 该模块需要NumPy和SciPy&#xff0c;matplotlib模块。 pip安装&#xff1a;…

SSMP整合案例(1) 构建 Spring Boot Vue MySql项目环境

前面 我们通过 java springboot整合MyBatis做数据库查询操作 java springboot整合MyBatis-Plus 多用点Plus支持一下国人开发的东西吧 java springboot整合Druid数据源配置 大体熟悉了springboot正好第三方应用的操作 那么 我们就来写一个 基于springboot的SSMP整合案例 其实就…

MongoDB快速实战与基本原理-1

一、MongoDB介绍 1、什么是MongoDB MongoDB是 一个文档数据库&#xff08;以 JSON 为数据模型&#xff09; &#xff0c;由C语言编写&#xff0c;旨在 为 WEB应用提供可扩展的高性能数据存储解决方案。 文档来自于“ JSON Document”&#xff0c;并非我们一般理解的 PDF&am…

人机交互学习-8 交互设计模型与理论

交互设计模型与理论 预测模型GOMS模型GOMS全称GoalsOperatorsMethodsSelection Rules 举例GOMS方法步骤GOMS模型分析 击键层次模型操作符使用方法放置M操作符的启发规则KLM分析KLM应用 Fitts定律三个指标a,b的确定说明Fitts定律建议Fitts定律应用 动态特性建模状态转移网三态模…

牛客网基础语法61~70题

牛客网基础语法61~70题&#x1f618;&#x1f618;&#x1f618; &#x1f4ab;前言&#xff1a;今天是咱们第七期刷牛客网上的题目。 &#x1f4ab;目标&#xff1a;可以掌握循环嵌套&#xff0c;逻辑思维更加清晰&#xff0c;对循环知识掌握熟练。 &#x1f4ab;鸡汤&#xf…

dp算法篇Day5

"生予希望&#xff0c;生予微光&#xff0c;生予一切无常" 21、乘积最大子数组 (1) 题目解析 一个正数&#xff0c;需要和正数相乘才能得到一个大的乘积&#xff0c;反之一个负数&#xff0c;需要和一个负数做乘积&#xff0c;才能 得到一个大的乘积。 解决子数组问…