技术标签: spring boot SpringBoot
1、数据导入:减轻录入工作量
2、数据导出:统计信息归档
3、数据传输:异构系统之间数据传输
<dependencies>
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
@Data
public class ExcelSubjectData{
//设置列对应的属性
@ExcelProperty(index = 0)
private String oneSubjectName;
@ExcelProperty(index = 1)
private String twoSubjectName;
}
package com.atguigu.eduservice.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.atguigu.eduservice.entity.EduSubject;
import com.atguigu.eduservice.entity.excel.ExcelSubjectData;
import com.atguigu.eduservice.service.EduSubjectService;
import com.atguigu.servicebase.handler.GuliException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
public class SubjectExcelListener extends AnalysisEventListener<ExcelSubjectData> {
//因为SubjectExcelListener不能交给spring进行管理,需要自己new,不能注入其他对象
public EduSubjectService subjectService;
public void setSubjectService(EduSubjectService subjectService) {
this.subjectService = subjectService;
}
public SubjectExcelListener(EduSubjectService subjectService) {
this.subjectService = subjectService;
}
public SubjectExcelListener() {
}
//一行一行去读取excle内容,第一个值是一级分类,第二个值是二级分类
@Override
public void invoke(ExcelSubjectData excelSubjectData, AnalysisContext analysisContext) {
if(excelSubjectData==null){
throw new GuliException(20001, "文件数据为空");
}
// //判断一级分类是否重复
EduSubject existOneSubject = this.existOneSubject(excelSubjectData.getOneSubjectName(), subjectService);
//判断一级分类
if(existOneSubject==null){
existOneSubject=new EduSubject();
existOneSubject.setTitle(excelSubjectData.getOneSubjectName());
existOneSubject.setParentId("0");
subjectService.save(existOneSubject);
}
String pid=existOneSubject.getId();
EduSubject existTwoSubject = this.existTwoSubject(excelSubjectData.getTwoSubjectName(), subjectService, pid);
//判断二级分类
if(existTwoSubject==null){
existTwoSubject=new EduSubject();
existTwoSubject.setTitle(excelSubjectData.getTwoSubjectName());
existTwoSubject.setParentId(pid);
subjectService.save(existTwoSubject);
}
}
//判断一级分类是否重复
private EduSubject existOneSubject(String name,EduSubjectService subjectService){
QueryWrapper<EduSubject> wrapper = new QueryWrapper<>();
wrapper.eq("title", name);
wrapper.eq("parent_id", "0");
EduSubject subject = subjectService.getOne(wrapper);
return subject;
}
//判断二级分类是否重复
private EduSubject existTwoSubject(String name,EduSubjectService subjectService,String pid){
QueryWrapper<EduSubject> wrapper = new QueryWrapper<>();
wrapper.eq("title", name);
wrapper.eq("parent_id",pid);
EduSubject subject = subjectService.getOne(wrapper);
return subject;
}
//读取完成后执行
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
public interface EduSubjectService extends IService<EduSubject> {
void saveSubject(MultipartFile file,EduSubjectService subjectService);
}
public void saveSubject(MultipartFile file,EduSubjectService subjectService){
InputStream in= null;
try {
in = file.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
EasyExcel.read(in, ExcelSubjectData.class, new SubjectExcelListener(subjectService)).sheet().doRead();
}
@Autowired
EduSubjectService subjectService;
//添加课程
@PostMapping("addSubject")
public R addSubject(MultipartFile file){
subjectService.saveSubject(file,subjectService);
return R.ok();
}
文章浏览阅读120次。新增CSS外观属性(CSS3)文字半透明(CSS3)文字颜色到了CSS3可以采取半透明的格式,语法如下:color:rgba(r,g,b,a) a是alpha透明的意思,取值为0-1之间,如:color:rgba(255,0,0,50%)文字阴影(CSS3)语法:text-shadow:h-shadow v-shadow blur colorh-shadow:必需,水平阴影位置..._css 附加外观
文章浏览阅读2.7k次。本博客主要实现的是像QQ表情的发送以及文字与表情的一起发送我们首先要明白QQ表情的发送其实是一种特别的文本,也是文本的形式,所以我们需要将QQ表情转化为特殊的文本形式 第一步我们先做一个资源工具类,如下所示//我们把表情资源做成一个工具类public class EmoUtils { public static int[] face = new int[] { R.drawable.ee_android表情如何传输
文章浏览阅读3.8k次。// ByteOrder规定了如何将字节序列和 16、32或64比特的无符号整数互相转化。type ByteOrder interface { Uint16([]byte) uint16 Uint32([]byte) uint32 Uint64([]byte) uint64 PutUint16([]byte, uint16) PutUint32([]by..._encoding/binary bigendian.putuint32
文章浏览阅读3.7w次,点赞13次,收藏25次。配置信息如下开机出现这个The CMOS battery is bad or was recent ly replaced.(If you cont inue to see this message, consult the system user 's guide for more information.)CMOS电池坏了或最近更换过。(如果您继续看到此消息,请参阅系统用户指南以获取更多信息。)按回车A first boot or NVRAM reset condition has been de_cmos message
文章浏览阅读1.2k次。HTML5期末大作业:宠物网网站设计——代码质量好-宠物网(8页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作_网页设计作业成品代码
文章浏览阅读803次。MySQL的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,这里我介绍几个经常使用的MySQL图形化管理工具,供大家参考。1、phpMyAdminhttp://www.phpmyadmin.net/phpMyAdmin是最常用的MySQL维护工具,是一个用PHP开发的基于Web方式架构在网站主机上的MySQL管理工具,支持中文,管理数据库非常方便。不足之处在于对大数据库的备份和恢复不方便。2、MySQLDumperhttp://www.mysqldumper._mysql客户端
文章浏览阅读6.8k次。本统计采集了某网站6月发布的程序员招聘信息,并统计如下。2019年6月全国程序员平均工资13255元,有所上涨。而5月和4月的工资分别为13041元和12807元。招聘人数招聘人数持续减少月人数4302,3035283,1436269,448有上表可知,两个月招聘人数减少了11%如果,考虑到4月还比5月少一天,那么,情况更加严重。全国各省程...
文章浏览阅读440次。话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。 这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。 现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。 Input本题目包含多组测试数据,请处理到文件结束。 每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。Output请在一行里面输出输出A+B的..._话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。
文章浏览阅读3.9k次。一、先去腾讯云平台开通人脸核身功能,需要填写正确的小程序APPID二、开通后、进入账号信息中->访问管理->访问秘钥,可得到调用API接口的参数:三、进入微信小程序中申请类目:政府/明生 申请成功后、可在接口设置授权中使用。四、在小程序设置中关联第三方平台,记住不要分配开发权限五、下载小程序SDK ,下载位置见步骤1的图。六、根据文档、在小程序代码..._verify_mpsdk
文章浏览阅读1.5k次。今天发现vue中一个有用的方法this.$forceUpdate()意思:正如方法名定义的那样,强制更新组件内容举个栗子:场景:elementUI , 有个select 选择框,option是个list循环现象:在方法中给select中的value 赋值之后,value改变了但是对应的字典并没有翻译。解决:利用select中change时间,当值改变后执行:this.$forceUpdate(),发现对应的字典也翻译了皆大欢喜,收工!!!另外用途:解决在数组中给某个对象属性直接赋值页面不改_forceupdate vue 子组件
文章浏览阅读2.2k次。Android中屏幕适配就是通过对尺寸单位、图片、文字、布局这四种类型的资源进行合理的设计和规划,在布局时合理利用各种类型的资源,让布局拥有适应能力,能在各种设备下保持良好的展现效果。..._屏幕适配是什么意思
文章浏览阅读6.1k次,点赞2次,收藏13次。一、查看哪些IP连接本机netstat -an二、查看TCP连接数查看tcp连接数状态 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 统计8080端口上有多少个TCP连接,命令: netstat -ant |grep 80|wc -l TCP连接中有多少个连接状..._如何实时监控/proc/net/tcp