java后端如何根据字典枚举值翻译成中文返回给前端

使用场景: 我从数据库库中查出来的数据是一个字典code值,但是需要在页面上展示对应的中文,可以前端进行翻译也可以后端进行翻译,看怎么配合着来,这里展示的是后端如何将数字翻译成对应的中文返回给前端进行展示。

1.定义一个枚举类


public enum ResultState {

    //回执状态
    CESHI1("11", "测试1"),
    CESHI2("12","测试2"),
    CESHI3("13","测试3"),
    CESHI4("14","测试4"),
    CESHI5("15","测试5"),
   
  

   
    private String code;
    private String msg;


    ResultState(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

//这里就是将code翻译成对应的中文
    public static String msg(String code) {
        ResultState[] resultStates = values();
        for (ResultState resultState : resultStates) {
            if (resultState.code().equals(code)) {
                return resultState.msg();
            }
        }
        return null;
    }

    public String code(){
        return this.code;
    }

    public String msg(){
        return this.msg;
    }


    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
}


2.你查出来的code进行传值,调用上面这个方法就搞定了。

//对回执状态进行翻译
 String returnCode= invtQueryDTO.getReturnCode();
 invtQueryDTO.setReturnStatus(ResultState.msg(returnCode));
### 实现和使用 Java 后端中的字典功能 在Java后端项目中实现字典功能通常涉及以下几个方面: #### 数据库设计 为了高效管理和维护字典数据,数据库表结构的设计至关重要。一般会有一个`dictionary_type`表用于存储字典类别信息以及一个`dictionary_data`表来保存具体的键对。 ```sql CREATE TABLE dictionary_type ( id INT PRIMARY KEY AUTO_INCREMENT, type_code VARCHAR(50), description TEXT ); CREATE TABLE dictionary_data ( id INT PRIMARY KEY AUTO_INCREMENT, type_id INT, code VARCHAR(50), value TEXT, FOREIGN KEY (type_id) REFERENCES dictionary_type(id) ); ``` #### 缓存机制 考虑到频繁访问性能需求,在实际应用中往往会对这些静态不变的数据做一层内存级缓存以减少数据库压力并提升响应速度。这里可以采用Redis作为分布式缓存解决方案[^2]。 - **引入依赖** 如果是基于Spring Boot框架,则可以在pom.xml文件添加如下依赖项以便集成Redis支持: ```xml <!-- Redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` - **配置类** 接着定义一个专门负责管理字典缓存读写的工具类或服务层组件 ```java @Service public class DictionaryCacheManager { private final String CACHE_NAME = "DICTIONARY_CACHE"; @Autowired private RedisTemplate<String, Object> redisTemplate; /** * 加载全部字典至缓存 */ public void loadAllDictionariesIntoCache() { // 清理旧版本缓存 redisTemplate.delete(CACHE_NAME); List<DictionaryTypeEntity> types = dictionaryTypeRepository.findAll(); Map<String, Map<String, String>> cacheMap = new HashMap<>(); for(DictionaryTypeEntity type : types){ List<DictionaryDataEntity> datas = dictionaryDataRepository.findByTypeId(type.getId()); Map<String, String> dataMap = datas.stream() .collect(Collectors.toMap( item -> item.getCode(), item -> item.getValue())); cacheMap.put(type.getTypeCode(),dataMap); } redisTemplate.opsForHash().putAll(CACHE_NAME,cacheMap); } /** * 获取指定类型的字典映射关系 */ public Map<String,String> getDictByType(String typeCode){ HashOperations<String,Object,Object> hashOps=redisTemplate.opsForHash(); return (Map<String, String>)hashOps.entries(CACHE_NAME).getOrDefault(typeCode,Collections.emptyMap()); } } ``` #### API接口开发 最后一步就是对外提供RESTful风格的服务供前端或其他微服务调用了。这部分工作可以通过Controller控制器完成,并利用Swagger文档化API方便调试测试。 ```java @RestController @RequestMapping("/api/dictionary") public class DictionaryApiController { @Autowired private DictionaryCacheManager dictCacheMgr; @GetMapping("/{type}") @ApiOperation(value="根据类型获取字典", notes="") public ResponseEntity<Map<String, String>> getByType(@PathVariable("type") String typeCode) { try{ Map<String, String> result=dictCacheMgr.getDictByType(typeCode.toUpperCase()); if(result.isEmpty()){ throw new ResourceNotFoundException("未找到对应类型["+typeCode+"]下的任何条目"); } return ResponseEntity.ok(result); }catch(Exception e){ log.error(e.getMessage(),e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); } } } ``` 上述代码片段展示了如何在一个典型的Java Web应用程序中构建起一套完整的字典管理系统,包括持久化存储、高速缓存优化和服务暴露等方面的内容。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值