业务场景:
- 上传excel按需写入字段;
- 覆盖更新数据;
设计方案
sequenceDiagram excel ->> handler: 上传文件,传入对应excel的字段名称、类型、索引 handler ->> execute: insert[插入]\ignore[忽略重复数据]\replace[替换重复数据] execute ->> insert: 写入数据库
mysql
insert into table () select ‘’ from dual where not exsits ()
insert ignore into id={IDGenerrate.gernxxx}
Insert into on dupli update xx=values()
Sql:
select id from table where dupKeys = ‘’
insert ignore into values (id)
ignore : insert into table () select ‘xx’,‘x’,‘xx from dual where not exsits ( select id from table where dupKeys = ‘’’)
Insert into table () select ‘x’,‘id’ from dual on dupli update xx=values()
classDiagram class Field{ Intger index 索引 String name 字段名 String type 字段类型 Object value 字段值 String exp 校验表达式 } class Record{ String tableName 表名 List fields 字段 } class ModeEnum{ INSERT("insert") 写入 IGNORE("ignore") 忽略重复数据 REPLACE("replace") 更新重复数据 } class ExcelUtil{ +File file excel +List:String fields 字段 +String tableName 数据表名 +Integer skip 跳过行 +ModeEnum mode 写入方式 +List:String dupKeys 用于校验重复的字段 +RecordHandler recordHandler 数据行处理 -static importExcel(file,tableName,fields,skip,mode,recordHandler) 导入 -static exportExcel(response,tableName,fields,skip,mode,recordHandler) 导出 } class RecordHandler{ -read(Record) 读取行 } ExcelUtil --> ModeEnum ExcelUtil --> Field ExcelUtil --> Record ExcelUtil --> RecordHandler