项目数据字典数据导入导出,web前端开发培训视频

28 阅读6分钟

后话


对于面试,说几句个人观点。

面试,说到底是一种考试。正如我们一直批判应试教育脱离教育的本质,为了面试学习技术也脱离了技术的初心。但考试对于人才选拔的有效性是毋庸置疑的,几千年来一直如此。除非你有实力向公司证明你足够优秀,否则,还是得乖乖准备面试。这也并不妨碍你在通过面试之后按自己的方式学习。 其实在面试准备阶段,个人的收获是很大的,我也认为这是一种不错的学习方式。首先,面试问题大部分基础而且深入,这些是平时工作的基础。就好像我们之前一直不明白学习语文的意义,但它的意义就在每天的谈话间。

所谓面试造火箭,工作拧螺丝。面试往往有更高的要求,也迫使我们更专心更深入地去学习一些知识,也何尝不是一种好事。 开源分享:docs.qq.com/doc/DSmRnRG…

com.alibaba

easyexcel

2.1.1

2、数据导出,将数据写到excel文件中

===================================================================================

2.1、封装对象,用于接收导出数据


在这里插入图片描述

@Data

public class DictEexcelVo {

@ExcelProperty(value = "id",index=0)

private Long id;

@ExcelProperty(value = "上级id",index = 1)

private Long parentId;

@ExcelProperty(value = "名称",index = 2)

private String name;

@ExcelProperty(value = "值",index = 3)

private String value;

@ExcelProperty(value = "编码",index = 4)

private String dictCode;

}

2.2、编写控制层方法


在这里插入图片描述

//导出数据字典数据

@GetMapping("exportData")

public void exportData(HttpServletResponse response) throws IOException {

dictService.exportDictData(response);

}

2.3、编写业务层方法


2.3.1、接口

在这里插入图片描述

//导出数据字典数据

void exportDictData(HttpServletResponse response) throws IOException;

2.3.2、实现类:代码分三部分

1、Excel导出中HttpServletResponse消息头参数设置

  • response.setCharacterEncoding(“UTF-8”);

//编码格式为UTF-8

  • response.setContentType(“application/vnd.ms-excel;charset=UTF-8”);

//让服务器告诉浏览器它发送的数据属于excel文件类型

  • response.setHeader(“Content-Disposition”, “attachment;filename=”" + fileName + “.xls”");

//告诉浏览器这个文件的名字和类型,attachment:作为附件下载;inline:直接打开

在这里插入图片描述2、数据库查询数据,数据对象拷贝

在这里插入图片描述

3、调用EasyExcel方法实现写操作

在这里插入图片描述

//导出数据字典数据

@Override

public void exportDictData(HttpServletResponse response) {

//设置下载信息

//让服务器告诉浏览器它发送的数据属于excel文件类型

response.setContentType("application/vnd.ms-excel");

response.setCharacterEncoding("utf-8");//编码格式为UTF-8

String fileName = "dict";

//告诉浏览器这个文件的名字和类型,attachment:作为附件下载;inline:直接打开

response.setHeader("Content-disposition","attachment;fileName="+fileName+".xlsx");

//查询数据库

List dictList = baseMapper.selectList(null);

//将查询出的所有数据转成DictExcelVo对象,并将所有对象放到集合中供EasyExcel写操作

//Dict---->DictExcelVo。将查询出来的Dict对象的值赋值给DictExcelVo

List dictEexcelVoList = new ArrayList<>();//创建一个存放DictEexcelVo对象的集合

for(Dict dict:dictList){//遍历从数据库中查询出的数据

DictEexcelVo dictEexcelVo = new DictEexcelVo();//新建DictEexcelVo对象,用户数据导出

BeanUtils.copyProperties(dict,dictEexcelVo);//将Dict对象值复制到dictEexcelVo对象中

dictEexcelVoList.add(dictEexcelVo);//将dictEexcelVo对象添加到集合中

}

try{

//调用方法执行写数据操,将数据库中数据写到excel表格中

EasyExcel.write(response.getOutputStream(),DictEexcelVo.class)

.sheet("数据字典")

.doWrite(dictEexcelVoList);

}catch (IOException e){

e.printStackTrace();

}

}

2.4、前端代码编写


2.4.1、src/dict.js中编写方法调用后端方法

在这里插入图片描述

//数据导出

exportData(response){

return request({

url:/admin/cmn/dict/exportData,

method:'get'

})

}

2.4.2、页面打印按钮

在这里插入图片描述

2.4.3、前端页面打印的方法

在这里插入图片描述

//导出数据

exportData(){

//调用导出接口

window.location.href="http://localhost:8202/admin/cmn/dict/exportData"

},

2.5、测试


点击页面的导出

在这里插入图片描述浏览器下载数据,并将数据存放到excel表格中

在这里插入图片描述

查看下载的数据

在这里插入图片描述

3、数据导入-读操作

=========================================================================

3.1、封装对象


在这里插入图片描述

@Data

public class DictEexcelVo {

@ExcelProperty(value = "id",index=0)

private Long id;

@ExcelProperty(value = "上级id",index = 1)

private Long parentId;

@ExcelProperty(value = "名称",index = 2)

private String name;

@ExcelProperty(value = "值",index = 3)

private String value;

@ExcelProperty(value = "编码",index = 4)

private String dictCode;

}

3.2、编写控制层方法


在这里插入图片描述

//将数据导入到数据库

@PostMapping("importData")

public Result importData(MultipartFile file) throws IOException {

dictService.importData(file);

return Result.ok();

}

3.3、编写业务层方法


3.3.1、接口

在这里插入图片描述

//将数据导入到数据库

void importData(MultipartFile file) throws IOException;

3.2.2、实现类

在这里插入图片描述

//将数据导入到数据库

@Override

public void importData(MultipartFile file) {

try{

EasyExcel.read(file.getInputStream(),DictExcelVo.class, new DictListener(baseMapper))

.sheet()

.doRead();

}catch (IOException e){

e.printStackTrace();

}

}

3.3、监听器


在这里插入图片描述

public class DictListener extends AnalysisEventListener {

private DictMapper dictMapper;

public DictListener(DictMapper dictMapper) {

this.dictMapper = dictMapper;

}

//一行一行的读数据

@Override

public void invoke(DictEexcelVo dictEexcelVo, AnalysisContext analysisContext) {

Dict dict = new Dict();//创建dict对象

BeanUtils.copyProperties(dictEexcelVo, dict);//将dictEexcelVo对象的值复制给dict,用于数据插入

dictMapper.insert(dict);//进行数据插入

}

前端资料汇总

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。

首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。

更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。 找工作无非就是看三点:和什么人、做什么事、给多少钱,要给这三者在自己的心里划分一个比例。 最后,祝愿大家在这并不友好的环境下都能找到自己心仪的归宿。