Scaffold-Boot-3.0框架使用文档Scaffold-Boot-3.0框架使用文档
首页
快速开始
变更记录
Source
首页
快速开始
变更记录
Source
  • 开始
  • 基础

    • 目录结构
    • 代码生成器
    • 增删改查
    • 异常处理
    • Knife4j(Swagger)文档
    • 登录&登出
    • 系统安全
    • 数据字典
    • Excel处理
    • 文件上传下载
    • 工具类
    • 定时任务
    • 微信集成
    • 短信服务
    • 参数配置
    • 接口限流
    • 日志审计
    • 数据脱敏
    • 网站管理
  • AI开发

    • AI项目工程结构
    • MCP服务
    • AI开发模式介绍
  • 开发规范
  • 常见问题
  • 深入

    • 配置详解-Config类
    • 配置详解-Yml配置文件
  • 生命周期

    • SonarQube代码质量保证
    • 部署到测试环境
    • 部署到正式环境
  • 优秀案例

    • Excel导入完整案例
  • 信创专区

    • 海量数据库
    • 神通数据库
    • 达梦数据库
    • 麒麟v10安装插件
  • 框架升级

数据字典

章节简介

此章节介绍系统中对于数据字典的维护、使用、扩展

维护

系统提供了数据字典维护功能,字典的增删改查都在数据字典菜单中进行。 img.png 如图所示,先点击新增的父级字典中的查看下级按钮,进入下级菜单页面后,系统提供了以下快捷方式进行批量新增子级字典。
img.png 如果使用批量新增的话需要以'名称<英文空格>code<回车符号>'格式提交
例如:
缺少物料 materials_missing
需外包维修 outsource_repair

一行一个。如需要单个新增,可以点击新增按钮,选择建好的父级字典。

提示

注意:字典的code全局唯一,否则会报错。故一般会在子集字典中加入父集字典的code。例如:审核状态的数据字典 audit_status 审核通过的为audit_status_pass。

字典转换

使用场景中经常需要数据字典code转中文,系统已经提供数据字典转换功能,可以直接使用。
数据字典转换在使用的时候,两个地方需要修改
1、你所使用的vo类中需要转换的字段需要加上注解@DictTrans(transTo = "feeCategoryText")列如

@ApiModelProperty(value = "费用类型")
@DictTrans(transTo = "feeCategoryText")
private String feeCategory;

@ApiModelProperty(value = "费用类型-字典值")
private String feeCategoryText;

transTo 指的是转义过后的字段名,默认为字段名+Text 或 字段名+Name,具体根据技术经理的要求而定。

高级方法

splitMark 指的是数据库内字段里的分割符,默认为逗号。
delimiter 指的是转换成中文的分隔符,默认为逗号。
dictName 指的是具体使用的那本字典的名字,默认为框架自带的单本字典名 dict-cache。
join 参数 boolean 值表示是否需要拼接成中文字符串,默认为 true。如果为 false,则返回 List<String> 类型。

2、使用 DictTransUtil.trans(result) 进行转换。
result 可以是单个对象,也可以是集合,转换过后会将你所标注的字段进行转换。

@ApiOperation("账单分页查询")
@PostMapping("/pageQuery")
public Result pageQuery(@RequestBody(required = false) BlBillInfoParams params) {
    if (params == null) {
        params = new BlBillInfoParams();
    }
    IPage<BlBillInfoPageQueryResultVO> result = baseService.pageQuery(params);
    // 转换数据字典
    DictTransUtil.trans(result.getRecords());
    return new JsonResult<>(result);
}

多本字典支持

当发现系统自带的字典满足不了,需要单独建表处理字典(如省市区数据),但是又想要使用字典转换功能。此时可以将自定义的字典加载进框架中,并通过指定字典的方式去调用

  1. 首先在DictCacheInitConfig中,新增方法,加载你的字典
  2. 然后在DictTrans注解中,指定dictName
package com.fykj.scaffold.config;


/**
 * 项目启动完成后初始化数据字典到缓存
 * 可以自定义各种字典
 */
@Component
@Slf4j
public class DictCacheInitConfig {

    @Autowired
    private DictCacheHelper dictCacheHelper;

    @Autowired
    private IOtherDictService otherService;

    @PostConstruct
    public void initSysDict() {
     //系统本身的字典初始化,略...
    }
    @PostConstruct
    public void initOtherDict() {
        log.info("初始化自定义字典名称数据到缓存");
        // 自定义字典初始化 示例
        Map<String, String> dictMap = otherService
                .list()
                .stream()
                .collect(Collectors.toMap(Dict::getCode, Dict::getName));
        dictCacheHelper.reloadDict(dictMap, "自定义字典名称");
        log.info("系统字典加载成功");
    }
}

使用方法如下

//非系统数据字典的字典,需要用dictName指定字典名称
@ApiModelProperty(value = "费用类型")
@DictTrans(transTo = "feeCategoryText", dictName="自定义字典名称")
private String feeCategory;
在 GitLab 上编辑此页
最后更新: 2025/8/8 09:53
贡献者: xuew, guobenjia
Prev
系统安全
Next
Excel处理