今天給大家介紹一個(gè)很好用的開源項(xiàng)目:easy_trans,它能讓你的項(xiàng)目減少30%的SQL代碼量,接下來讓我們進(jìn)一步了解它。
什么是Easy_Trans
Easy Trans是一款用于做數(shù)據(jù)翻譯的代碼輔助插件,利用MyBatis Plus/JPA/BeetlSQL 等ORM框架的能力自動(dòng)查表,讓開發(fā)者可以快速的把ID/字典碼 翻譯為前端需要展示的數(shù)據(jù)。
Easy_Trans
easy trans的優(yōu)點(diǎn)
功能多樣
- 緩存支持
- 跨微服務(wù)翻譯支持(User和Order 是2個(gè)不同微服務(wù),order里面有userId 需要userName)
- 國際化支持
- 多種ORM框架適配
- 多數(shù)據(jù)源支持
- 集合支持(userIds [1,2,3] 翻譯為張三,李四,王五)
- 反向翻譯支持 男->gender 0 張三->user id id 陜西分公司 財(cái)務(wù)部 -> org_id 1
適用多種場景
- 我擁有一個(gè)ID,但需要向客戶展示他的職位/姓名,但又不想手動(dòng)執(zhí)行表關(guān)聯(lián)查詢。
- 我有一個(gè)字典碼"sex"和對(duì)應(yīng)的字典值0,我希望將其翻譯為"男",以便展示給客戶。
- 我有一組用戶ID,例如1、2、3,我希望將它們展示為"張三"、"李四"、"王五",供客戶查看。
- 我的枚舉中包含一個(gè)"title"字段,我希望向前端展示該字段的值,以供客戶查看。
- 我擁有一個(gè)唯一鍵(例如手機(jī)號(hào)碼、身份證號(hào)碼),但需要向客戶展示他們的職位/姓名,而又不想手動(dòng)執(zhí)行表關(guān)聯(lián)查詢。
配置簡單
對(duì)于springboot項(xiàng)目,只需要引入 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 >
然后引入項(xiàng)目中對(duì)應(yīng)的orm框架的擴(kuò)展,以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 全局?jǐn)r截后自動(dòng)翻譯
is-enable-global: true
# 字典緩存是否放到redis中 做二級(jí)緩存,微服務(wù)模式推薦開啟
dict-use-redis: true
db-type: mysql
靈活易用
easy trans 支持五種類型
1、字典翻譯(TransType.DICTIONARY) 需要使用者把字典信息刷新到DictionaryTransService 中進(jìn)行緩存,使用字典翻譯的時(shí)候取緩存數(shù)據(jù)源
2、簡單翻譯(TransType.SIMPLE) 比如有userId需要userName或者userPo給前端,原理是組件使用MybatisPlus/JPA的API自動(dòng)進(jìn)行查詢,把結(jié)果放到transMap中。
3、跨微服務(wù)翻譯(TransType.RPC)
比如訂單和用戶是2個(gè)微服務(wù),但是我要在訂單詳情里展示訂單的創(chuàng)建人的用戶名,需要用到RP翻譯,原理是訂單微服務(wù)使用restTemplate調(diào)用用戶服務(wù)的一個(gè)統(tǒng)一的接口,把需要翻譯的id傳過去,然后用戶微服務(wù)使用MybatisPlus/JPA的API自動(dòng)進(jìn)行查詢把結(jié)果給訂單微服務(wù),然后訂單微服務(wù)拿到數(shù)據(jù)后進(jìn)行翻譯,當(dāng)然使用者只是需要一個(gè)注解,這些事情都是由組件自動(dòng)完成的。
4、AutoTrans(TransType.AUTO) 還是id翻譯name場景,但是使用者如果想組件調(diào)用自己寫的方法而不通過Mybatis Plus/JPA 的API進(jìn)行數(shù)據(jù)查詢,就可以使用AutoTrans
5、枚舉翻譯(TransType.ENUM) 比如我要把SEX.BOY 翻譯為男,可以用枚舉翻譯。
-
SQL
+關(guān)注
關(guān)注
1文章
750瀏覽量
43900 -
代碼
+關(guān)注
關(guān)注
30文章
4671瀏覽量
67765 -
easy
+關(guān)注
關(guān)注
0文章
18瀏覽量
12521 -
Trans
+關(guān)注
關(guān)注
0文章
2瀏覽量
5865 -
開源項(xiàng)目
+關(guān)注
關(guān)注
0文章
36瀏覽量
7144
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論