在线教育项目-day05【课程分类管理-添加课程分类】
2024-10-05 23:43:47
1.引入依赖
之前测试EasyExcel已经引入过了
2.利用代码生成器生成结构
我们做的只需要更改代码生成器的数据库表即可
3.运行代码生成器
4.书写代码
1.controller
@RestController
@CrossOrigin
@RequestMapping("/eduservice/edu-subject")
public class EduSubjectController {
@Autowired
private EduSubjectService eduSubjectService;
//添加课程分类
//获取上传的文件,把文件内容读出来
@PostMapping("addSubject")
public R addSubject(MultipartFile file){
eduSubjectService.save(file);
return R.OK();
} }
2.service
@Data
public class SubjectData {
@ExcelProperty(index=0)
private String oneSubjectName;
@ExcelProperty(index=1)
private String secondSubjectName; }
public interface EduSubjectService extends IService<EduSubject> {
//添加课程分类
void save(MultipartFile file);
}
3.serviceImpl
@Service
public class EduSubjectServiceImpl extends ServiceImpl<EduSubjectMapper, EduSubject> implements EduSubjectService { @Override
public void save(MultipartFile file) {
try {
InputStream inputStream=file.getInputStream();
EasyExcel.read(inputStream, SubjectData.class,new SubjectExcelsListener()).sheet().doRead();
}catch (Exception e){
e.printStackTrace();
} }
}
4.Excel实体类
@Data
public class SubjectData {
@ExcelProperty(index=0)
private String oneSubjectName;
@ExcelProperty(index=1)
private String secondSubjectName; }
5.
最后关于这个监听器,我们要注意一个问题,因为代码的原因我们没法把监听器交给Spring管理
所以要把eduSujectService传进来
5.书写监听器
public class SubjectExcelsListener extends AnalysisEventListener<SubjectData> {
public EduSubjectService subjectService;
public SubjectExcelsListener(){}
public SubjectExcelsListener(EduSubjectService subjectService){
this.subjectService=subjectService;
}
//一行一行去读取excle内容
@Override
public void invoke(SubjectData subjectData, AnalysisContext analysisContext) {
if(subjectData == null) {
throw new onlineEduException(20001,"添加失败");
}
//添加一级分类
EduSubject existOneSubject = this.existOneSubject(subjectService,subjectData.getOneSubjectName());
if(existOneSubject == null) {//没有相同的
existOneSubject = new EduSubject();
existOneSubject.setTitle(subjectData.getOneSubjectName());
existOneSubject.setParentId("0");
subjectService.save(existOneSubject);
} //获取一级分类id值
String pid = existOneSubject.getId(); //添加二级分类
EduSubject existTwoSubject = this.existTwoSubject(subjectService,subjectData.getSecondSubjectName(), pid);
if(existTwoSubject == null) {
existTwoSubject = new EduSubject();
existTwoSubject.setTitle(subjectData.getSecondSubjectName());
existTwoSubject.setParentId(pid);
subjectService.save(existTwoSubject);
}
} @Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) { }
//判断一级分类是否重复
private EduSubject existOneSubject(EduSubjectService subjectService,String name) {
QueryWrapper<EduSubject> wrapper = new QueryWrapper<>();
wrapper.eq("title",name);
wrapper.eq("parent_id","0");
EduSubject eduSubject = subjectService.getOne(wrapper);
return eduSubject;
}
//判断二级分类是否重复
private EduSubject existTwoSubject(EduSubjectService subjectService,String name,String pid) {
QueryWrapper<EduSubject> wrapper = new QueryWrapper<>();
wrapper.eq("title",name);
wrapper.eq("parent_id",pid);
EduSubject eduSubject = subjectService.getOne(wrapper);
return eduSubject;
}
}
最新文章
- git教程链接
- python多线程学习记录
- LeetCode之237. Delete Node in a Linked List
- linux的bash 终端操作快捷键
- 1204. Maze Traversal
- 【技术贴】VirtualBox给VDI格式的虚拟机扩容
- Oracle索引(B*tree和Bitmap)学习
- JAVA通过C3P0连接数据库
- UITextView 点return 隐藏键盘
- myeclipse激活+Aptana安装配置
- mongo批量更新
- 《C和指针》章节后编程练习解答参考——6.1
- Sagit.Framework For IOS 开发框架入门教程3:Start引导页及框架布局和隐藏事件的内幕
- js 手动插入meta标签和script标签
- Servlet抽取的问题-method传递问题+表单提交的问题
- webstorm验证码
- 浅析Mysql的my.ini文件
- 04_web基础(六)之请求转发与重定向
- dj 用户认证组件
- [转载] 什么是istio 官网内容
热门文章
- HDU1087:Super Jumping! Jumping! Jumping!(DP水题)
- uni-app在线引入阿里字体图标库
- 开启sftp服务日志并限制sftp访问目录
- wireshark抓包实战(一),抓包原理
- MODIS系列之NDVI(MOD13Q1)四:MRT单次及批次处理数据
- std::string::copy函数
- tf.train.GradientDescentOptimizer 优化器
- split("; {1,}";) 含义
- 使用ffprobe 查询wav文件信息
- break与continue对比