一、项目开发-后台管理
2、公寓信息管理
2.8图片上传管理
- 图片上传接口接收的是图片文件,返回的Minio对象的URL。
- 在common模块配置minio
- 编写upload方法,MP中没有定义好的方法,只能自己编写。较繁琐。用到了输入流
- minioclient中的putobject方法可以将输入流上传
- 110-尚庭公寓-项目开发-后台管理-公寓管理-上传图片-异常处理_哔哩哔哩_bilibili这个视频里面提到了存在的一些问题,并做了改正
- SpringMVC全局异常处理,由于之前的接口都没考虑如果遇到异常怎么做,就要用到这个
2.9公寓管理
- 里面要实现6个接口:保存或更新公寓信息、根据条件分页查询公寓列表、根据ID获取公寓详细信息、根据ID删除公寓信息、根据ID修改公寓公布状态、根据区县ID查询公寓信息列表。
- 保存或更新公寓信息接口:因为需要的信息不止公寓信息一张表,还需要其他表,所以就自定义了一个VO类作为请求参数。
- 因为涉及到多表,所以要自己编写方法去实现,不能用MP的方法了
- 修改公寓信息的逻辑:对于公寓表,可以直接修改,但是对于公寓表对应的图片、标签等表,应先删除原有的集合,再把收到的新集合插入。
- 可以直接用父类的save方法,并把vo参数传给他,这个save方法只会处理公寓信息,不管其他表的信息,也不影响其他表的信息
- MP中的通用Service中有批量插入,但是通用Mapper中没有批量插入
- 这个接口也比较繁琐
-
在Java类上使用
@Builder
注解后,不能再直接使用new
关键字来创建该类的实例。这是因为@Builder
注解会自动为您的类生成一个构建器模式的构造方法,这个方法会生成一个带有所有属性的实例。同时,@Builder
注解会私有化默认的无参构造函数,以防止直接通过new
关键字创建实例。要创建使用了
@Builder
注解的类的实例,您应该使用构建器提供的builder()
方法来初始化一个构建器对象,然后通过设置构建器对象的属性来构建实例,并最终使用build()
方法来获取最终的对象实例。这种方式提供了一种更安全、更灵活的对象创建方式,尤其是当您需要设置多个属性或者处理复杂的构造逻辑时 -
根据条件分页查询公寓列表:
-
分页查询用到了MP中的IPage,可以创建一个VO来继承之前的信息类,来实现扩展
-
多表查询,还要自定义sql来实现
-
xml里面编辑动态过滤条件
-
这个接口上强度了,强烈建议自己实现一遍
-
根据ID获取公寓详细信息:用在修改公寓时的公寓回显上。
-
这个接口也涉及到了多表查询,但是不能像上一个接口一样,自己编写sql语句进行查询,因为就变得特别复杂了,而是在代码中完成表的关联操作,而不是在sql语句中join。而且这个接口只涉及到一个公寓信息,所以不会向数据库请求很多次,但是上一个接口涉及到很多公寓,每次查询一个公寓就会请求一次数据库,如果在代码中完成关联就会麻烦。
-
自定义sql,就要注入一个mapper,最终要查哪张表,就注入对应的mapper
-
当需要大量的set操作时,可以考虑BeanUtils.properties来代替
-
这个接口也比较麻烦
-
根据id删除公寓信息:
-
根据ID修改公寓发布状态
-
这个里面的泛型要填自己要修改的表
- 先用eq确定哪个公寓,再用set来设置状态,最后将过滤器传给service.update()