一、文件的上传下载
1.文件上传
服务器端接收客户端页面上传到文件,通常会使用apache的两个组件:commons-fileupload、commons-io(io流,文件的上传下载本质上都是对流进行操作),直接使用这两个api代码比较繁琐。
spring框架的spring-web包对文件上传进行了封装,大大简化了服务端代码,我们只需要在Controller的方法中声明一个MultipartFile类型的参数即可接收上传的文件。
代码如下,post请求和upload路径都是element-ui规定好的
2.文件下载
将文件从服务器传输到本地计算机的过程。上传请求成功后自动马上发出下载请求
通过浏览器进行文件下载有两种表现形式:①以附件形式下载,弹出保存对话框,将文件保存到指定磁盘目录;②直接在浏览器中打开。这两种本质上就是服务器端将文件以流的形式写回浏览器的过程。
代码如下
二、新增菜品
下拉列表的数据很简单,一个查询就行了,图片的上传上面也讲过了,就不多赘述了。直接写这个页面保存的请求。
从前端传过来的数据可以发现,传输的数据与实体类的属性不是一一对应的,所以我们导入DTO(数据传输对象),用于封装页面提交的数据。
然后在DishService及实现类中实现saveWithFlavor方法,本质上这是一对多表处理方法
启动类这里也要加上注解,才能开启@Transactional
最后别忘了DishController类
三、分页查询
菜品管理中分页查询要注意的是图片展示(即图片下载,上面已完成)和菜品分类的名称
从sql表中查询返回的是分类id,前端需要分类名称,对此我们可以继续使用DTO,在的DishDto类中再加个categoryName属性。
修改上面的分页查询代码
我之前有点傻,觉得为什么不能直接DishDtoService.page(dishDtoPage,dishLambdaQueryWrapper);这样就不用复制属性了,直接map遍历赋值categoryName就行了,然后我试了一下,报了Table 'reggie.dish_dto' doesn't exist的错误,一下子觉得当时脑子进水了,没有这个表。
四、修改菜品
1.获取数据回显
代码:
2.修改数据
这两个代码本质上就是一对多表的查询和更新,和前面的代码差不多。