您现在的位置是:首页 > 文章详情

SystemDictStarter v1.4.5 一种优雅的数据字典文本转换方式

日期:2021-11-07点击:874

在日常项目开发中,不免都会用到一些数据字典的信息,遇到这种场景通常都是后端把字典的文本转换好一起返回给前端,前端只需要直接展示即可。

一般情况下后端可能需要单独给返回对象创建一个字段来存储对应的字典文本值,然后进行手动的处理,这种方式通常比较繁琐,在字段多的时候会增加更多的工作量。

本项目基于 Jackson 的自定义注解功能实现了这一自动转换过程,不需要在对象中定义存放字典文本的字段,只需要在字段上使用 @DictText 注解,Jackson序列化的时候即可自动把字典值转换成字典文本。

更新日志

功能代码变更

  • feat: 增加一个 DictText#replace 配置字段,标记是否用字典文本值替换字典值(在原字段上输出字典文本值)#I4GT0N:希望增加字典替换功能
  • feat: 增加一个 RefreshDictTypeEvent 事件刷新一个完整的字典类型信息 github#2
  • fix: 修复刷新单个字典值文本信息时文本信息未同步到字典类型对象里面的问题 github#2
  • feat: RefreshDictValueEvent 事件增加 updateDictType 字段决定在更新单个字典文本值时是否维护对应字典类型对象的字典值列表信息

涵盖 1.4.4.X 变更

  • feat: 在刷新字典时当 DictValueVo.title == null 被视为删除相应的字典文本信息
  • fix: 修复 SpringBoot 2.4.0 以下版本无法启动问题

配置文件变更:

  • 增加一个 system.dict.replace-value 配置项(在原字典值字段上把字典值替换成字典文本输出)

由于引入了 DictText#replace 配置,会影响使用 DictText#mapValue=YES 和 system.dict.map-value=true 的配置,有使用上诉配置的请增加如下配置:

  1. 使用注解 DictText#mapValue=YES 配置的请增加 DictText#replace=YES 配置
  2. 使用全局 system.dict.map-value=true 配置的请增加 system.dict.replace-value=true 配置

 

项目地址

详细使用文档

https://gitee.com/houkunlin/system-dict-starter/blob/main/usage.md

注解简单使用示例

 // 注解的简单使用 @Data @AllArgsConstructor class Bean { // {"userType":"1","userTypeText":"普通用户"} @DictText("PeopleType") private String userType = "1"; } // 自定义字典文本输出字段 @Data @AllArgsConstructor class Bean { // {"userType":"1","typeText":"普通用户"} @DictText(value = "PeopleType", fieldName = "typeText") private String userType = "1"; } // 使用分隔符来存储多个字典值 @Data @AllArgsConstructor class Bean { // {"userType":"0,1","userTypeText":"系统管理、普通用户"} @DictText(value = "PeopleType", array = @Array(split = ",")) private String userType = "0,1"; } // 使用集合来存储多个字典值 @Data @AllArgsConstructor class Bean { // {"userType":["0","1"],"userTypeText":"系统管理、普通用户"} @DictText("PeopleType") private List<String> userType = Arrays.asList("0", "1"); } // 把集合的字典文本转换成数组形式 @Data @AllArgsConstructor class Bean { // {"userType":["0","1"],"userTypeText":["系统管理","普通用户"]} @DictText(value = "PeopleType", array = @Array(toText = false)) private List<String> userType = Arrays.asList("0", "1"); } // 转换成 Map 形式在原字段上输出 @Data @AllArgsConstructor class Bean { // {"userType":{"text":"普通用户","value":"1"}} @DictText(value = "PeopleType", mapValue = DictText.Type.YES, replace = DictText.Type.YES) private String userType; }
原文链接:https://www.oschina.net/news/167709/systemdicstarter-1-4-5-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章