💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
6.3.1.2 **translate缓存翻译** 6.3.1.2.1 **常规用法** 缓存翻译的目的在于简化sql逻辑,避免sql过多的关联,比如:查询员工信息表,员工的岗位、籍贯、技能等级等属于数据字典,要显示相应的中文。支持对多值进行翻译。 如:某个字段结构是A,B,C这种格式,翻译结果为:A名称,B名称,C名称: 传统模式: ![](images/b5f87015da7730356f1c9a1022ba46280a8c8ced.png) 是不是这酱汁的?好长的sql呀!关联了2次数据字典,性能必然下降! sqltoy是怎么做呢? ![](images/2bc18d43cfde3fa8b55b8d552f54274efe798ea3.png) 属性名称 是否可选 说明 cache 必选项 缓存的名称 cache-type 可选项 这里主要实现传递一个分类,如数据字典类别 columns 必选项 对哪些列进行翻译(可以多列) cache-indexs 可选项 默认为1,值要跟columns对应 split-regex 可选项 针对多值进行翻译时的切割符号 link-sign 可选项 多值翻译后拼接符号 注: 缓存翻译可以一组代码进行同时翻译。 如:某个字段结构是A,B,C这种格式,翻译结果为:A名称,B名称,C名称: <translate cache="dictKeyNameCache" columns="SEX\_TYPE" split-regex="\\\\," link-sign=","/> Sql极度精简,通过缓存(sqltoy默认使用的是ehcache缓存框架,可以根据实际通过接口拓展)翻译只对结果数据通过内存将code转为对应的Name。 Translate定义请参见演示项目sqltoy-quickstart下的sqltoy-translate.xml配置: ![](images/fa00e26497554e38babc66f486a5a7671d50bb87.png) 缓存翻译查询必须要:key,name,aliaseName,topName等形式,查询结果是以LinkedHashMap<String,Object\[\]> 形式存储,因此cache-index,0列对应的是key,1列对应name,等等! spring中配置的sqltoyContext中配置的缓存翻译 ![](images/8607d3aa121735855d4aebad8fdb710d69d00097.png) 6.3.1.2.2 **特殊场景介绍** 假如要翻译商品名称,根据local选择确定是中文和英文 这种场景缓存的模式分2种: * 多字段确认模式 代码名称(PROD\_CODE) 环境(ENV\_TYPE) 名称(PROD\_NAME) A001 CN 苹果 A001 EN APPLE 设置缓存时,双字段组合成一个唯一的key: select concat(PROD\_CODE,ENV\_TYPE) GLOBAL\_KEY, PROD\_NAME 代码中则通过QueryExecutor或EntityQuery动态传递Translate,通过设置keyTemplate将key和外部参数组合起来作为缓存的key ![](images/5c625a4ab22928f39ca73a960dd66fedc3d48b14.png) * 多列模式 代码名称(PROD\_CODE) 中文名称 英文名称 A001 苹果 APPLE A002 香蕉 BANANA Java代码中则可以动态设置cache-index ![](images/774c37baa2eb208d8a993044b36769057400971e.png) 上述是EntityQuery单表查询,针对xml中定义的复杂sql,我们使用QueryExecutor来实现! ![](images/9eed2ee43ea5f1fbcd1a487f8f76b686779f5814.png) 注意:使用QueryExecutor对应的缓存设置sql中须写完整 Select key as translateName,如:下图所示的STAFF\_ID staffName等 ![](images/7e199d28ba355236aca473fc8950a14f25130f2f.png) 6.3.1.2.3 **对接口数据进行翻译** * 数据来源于其他的接口服务,其中有部分信息需要将编码转为名称,无法通过sql中配置缓存翻译,sqltoy提供了直接对集合进行翻译的方式。 ![](images/8d3e02451ae944442cbf51dc021c30927b26eb32.png) * 用法说明: ![](images/cb325be25df6c22ec9075b2c3569e19502d711c4.png)