今天开始Spring MVC相关的课程学习了。加油。拼搏人!如果计划顺利的话,最晚明天就可以开始敲项目代码。

Restful风格

图片说明

SpringMVC返回数据给前端的三种方式:Model,ModelAndView,ModelMap。

接受请求端传来的数据方式:

  1. 注解@RequestParam
  2. 直接Object object (前提:对象字段必须一一对应,否则为null)

2021年3月5日 15:51:30 :大致上来说SpringMVC就先放着了。直接开始MybatisPlus学习。

主键生成策略

图片说明

AUTO:自增策略
NONE:无主键
INPUT:手动输入
ASSIGN_ID:雪花算法
ASSIGN_UUID:不含中划线的UUID

雪花算法:

SnowFlake 算法,是 Twitter 开源的分布式 id 生成算法。

核心思想:使用一个 64 bit 的 long 型的数字作为全局唯一 id。

图片说明

  • 最高位是符号位,始终为0,不可用。
  • 41位的时间序列,精确到毫秒级,41位的长度可以使用69年。时间位还有一个很重要的作用是可以根据时间进行排序
  • 10位的机器标识,10位的长度最多支持部署1024个节点。(5位作机房,5位作机器。或自行调整)
  • 12位的计数序列号,序列号即一系列的自增id,可以支持同一节点同一毫秒生成多个ID序号,12位的计数序列号支持每个节点每毫秒产生4096个ID序号。

优点:

毫秒数在高位,自增序列在低位,整个ID都是趋势递增的。
不依赖数据库等第三方系统,以服务的方式部署,稳定性更高,生成ID的性能也是非常高的。
可以根据自身业务特性分配bit位,非常灵活。

缺点:

强依赖机器时钟,如果机器上时钟回拨,会导致发号重复或者服务会处于不可用状态。

@component注解

@Controller 控制器(注入服务)
用于标注控制层,相当于struts中的action层

@Service 服务(注入service)
用于标注服务层,主要用来进行业务的逻辑处理

@Repository(实现dao访问)
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件

@Component

泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

注解总结

@Component, @Service, @Controller, @Repository是spring注解,注解后可以被spring框架所扫描并注入到spring容器来进行管理
@Component是通用注解,其他三个注解是这个注解的拓展,并且具有了特定的功能
@Repository注解在持久层中,具有将数据库操作抛出的原生异常翻译转化为spring的持久层异常的功能。
@Controller层是spring-mvc的注解,具有将请求进行转发,重定向的功能。
@Service层是业务逻辑层注解,这个注解只是标注该类处于业务逻辑层。
用这些注解对应用进行分层之后,就能将请求处理,义务逻辑处理,数据库操作处理分离出来,为代码解耦,也方便了以后项目的维护和开发。

自动填充功能。gmt_modified,gmt_create.

  1. 在需要自动填充的字段上加@TableField注解。
  2. @TableField括号中标注fill = (何时插入)如:fill = FieldFill.INSERT表示插入时自动填充。
  3. 编写handler继承metaObjectHandler并重写insertFill和updateFill方法。例如:
     //插入时更新gmt_create字段和gmt_modified字段
     @Override
     public void insertFill(MetaObject metaObject) {
         System.out.println(" ==> start insert fill ....");
         this.strictInsertFill(metaObject,"gmtCreate",Date.class, new Date());
         this.strictUpdateFill(metaObject,"gmtModified",Date.class, new Date());
     }
     //更新时只更新gmt_modified字段
     @Override
     public void updateFill(MetaObject metaObject) {
         System.out.println(" ==> start insert fill ....");
         this.strictUpdateFill(metaObject,"gmtModified",Date.class, new Date());
     }

今日学习总结(看完了MYBATISPLUS的学习视频):

  1. 雪花算法
  2. @component算法
  3. 粗略了解乐观锁(version)。
  4. 伪删除is_deleted
  5. gmt_create 以及 gmt_modified
  6. 数据的接受与返回。

    明日计划:

  7. 修改简历
  8. 了解SPRING BOOT自动装配原理
  9. 学习spring boot
  10. 试着将毕设代码后台换成spring boot本地调试通过。