springboot 外卖-Day3-1

进度好难推 救命

自定义注解

注解@Target和@Retention的作用_target注解 retention注解-CSDN博客

其实都是规定动作 AOP

三点:切面、切入点、通知

SpringBoot中使用Aspect实现切面,超详细_aspect切面-CSDN博客

自定义注解中定义了value这个方法 参数要有

@AutoFill(value = OperationType.INSERT)

@RequestBody 要有

【SpringBoot】带你一文彻底搞懂RestController和Controller的关系与区别-CSDN博客


文件上传 

@ConditionalOnMissingBean

配置oss 应该先试用的 痛失¥10,开启公共读才能让图片回显到浏览器处

通过固定的aliossUtil 实现上传,也可以自己改url,存到指定目录下。


菜品

一旦涉及到表连接 就很混乱 多学一下sql写法


CRUD总结:

一个请求过来,先到controller类处理,@RequestBody获取到信息,此信息是以DTO形式存储的。定义一个service层的变量,此处service需要@Autowired注入。

接着调用来到Service(事务)层,每一个service接口都有其对应的实现类impl,在实现类中调用mapper进行持久化存储(即操作数据库)。此处的mapper需要@AutoWired注入。(字段注入就相当于通过类的构造函数传递依赖项,使依赖关系在对象创建时就得到了满足,不注入的话这个service/mapper会为null)

与数据库字段对应的是pojo的entity实体类,这里需要将DTO的数据复制到entity中,用BeanUtil实现。调用mapper对应的方法(like:dishmapper.insert(dish)),转到mapper层。

mapper其实也都是interface,mapper层有Mybatis协助,有两种方法实现数据库操作:

  1. 对于简单的查询,使用@Select之类的注解,直接写“select * from dish where id= ?”
  2. 对于动态sql,使用xml配置(文件路径在application.yml中体现),insert into dish(...数据库列名...)values(#{entity1},#{entity2}...)//注意逗号,尤其是update语句的逗号

 主要xml的namespace,点前面的小红棕鸟可以看到关联情况,点上下箭头可以看到类的继承/实现情况。注意entity中字段用的是驼峰命名法,而数据库中一般用下划线连接

在实现公共字段自动填充后,在mapper语句上加一个@Autofill(value = Operation...)即可自动填充时间和修改人(否则你就需要在service实现类保证这一点)

对于分页查询操作也是类似的,主要在业务层,定下startPage,然后mapper执行query,返回page对象


alt+回车 对应可选项

你可能感兴趣的:(spring,boot,java,后端)