Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

希望能增加导入匹配数据字典 #5

Open
TomYule opened this issue Jul 18, 2022 · 4 comments
Open

希望能增加导入匹配数据字典 #5

TomYule opened this issue Jul 18, 2022 · 4 comments

Comments

@TomYule
Copy link

TomYule commented Jul 18, 2022

希望能增加导入匹配数据字典
例如
某个字段 需要转换成数据字典的某个表的某个值

  @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")

希望能有类似酱紫的注解 获取spring DataSource 生成SQL去查询 替换

@1015770492
Copy link
Owner

1015770492 commented Jul 18, 2022

不建议进行jdbc来完成数据字典转换,我建议你用我这个工具进行导入将其转换为javaBeanList。
然后再将javaBean通过数据字典进行更新。

如果excel里 有1w条数据,我总不能进行1w次查询吧?况且这1w条数据可能有1千条重复的字典项,结果我重复了1k次,完全没必要(做了很多无用功)。因此需要考虑做缓存。

我倒是觉得与其你上述的配置,不如果注解中配一条sql,sql的结果就是返回的key和value 最终会是一个map存起来。


我说的那个功能可以考虑做一下。 类似于 @dict(sql="select column1 as key,column2 as value from TableA where condition in (select distinct condition from tableB)")
可以通过加一个tableB 来控制这个select column1 as key , column2 as value from xxxTable结果返回的内容,只需要更新tableB中相应的数据来控制TableA 返回的数据


如果一些常量数据建议直接用@MapEntry(key=,value=)的形式完成字典映射。
举个例子:@MapEntry(key="是",value="1")
导入的逻辑:类似与单元个内容值为 “是” 则会变成 "1"
导出:反过来处理


当然你可以在v1.3.6这个分支上提交代码,我可以帮你打一个包到maven仓库。

@TomYule
Copy link
Author

TomYule commented Jul 19, 2022

注解一次查出数据库的值存入map @dict(dictTable = "sys_user", dicCode = "username", dicText = "realname " queryAll =true)
做一下 性能 模式 或者速度模式 区分标识 数据量大小
数据量小全部查询 数据量大 单独查询

@1015770492
Copy link
Owner

打算做一下这个字典项,会在导入的过程中就将其进行映射

@1015770492
Copy link
Owner

1015770492 commented Jul 21, 2022

今天合并了一下之前写的代码。
最新版本:1.3.13 的ExcelImportExportUtils是带映射和逻辑空校验,jsr303也是支持的。
有时间做一下查询数据库获得到数据字典的情况。


ExcelImportExportUtils 通过 @MapEntry 先将表中的值进行映射和替换,如果excel的值有重复的,例如:

贵阳市-贵阳市 要求替换成区域码,可以配一个

@MapEntry(key="贵阳市","GYS")
@ExcelTitleBind(index="A",replaceAll=true)
private String position;

position字段会变成 "GYS"
replaceAll 如果设置为false,则变成"GYS-GYS"

另外逻辑校验也是支持的,ExcelTitleBind本身的nullable只是单纯的空校验,
如果加了@CheckValues 可以解决字段之间的一些逻辑空校验;
利用当a字段的值为X的时候,字段b不能为空。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants