JSD-2204-总结SpringMvc,MyBatis,SpringBoot框架-Day09

1.Spring MVC框架

1.1关于Spring MVC框架

Spring MVC是建立在Spring框架基础之上的。

Spring MVC主要解决了接收请求、响应结果的问题。

1.2关于接收请求

需要自定义类,在类上添加@Controller / @RestController注解,则此类就是控制器类。

通常,建议在类上也添加@RequestMapping配置请求路径中的前缀部分。

在类中自定义处理请求的方法:

  • 注解:添加@RequestMapping系列注解来配置请求路径和某些参数
  • 访问权限:应该使用public
  • 返回值类型:在前后端分离的开发模式下,应该使用自定义的数据类型,例如JsonResult
  • 方法名称:自定义
  • 参数列表:当请求参数数量只有1个时,或少量参数且没有相关性,直接写,当请求参数数量超过1个且具有相关性时,应该封装为自定义的数据类型,并使用自定义的数据类型作为参数

1.3关于接收的请求参数

如果要求客户端提交的请求参数是JSON格式的,则处理请求的方法的参数列表中,封装的数据类型必须添加@RequestBody注解,如果要求提交的请求参数是FormData格式的,则不可以添加@RequestBody注解。

如果某个请求参数是URL的一部分,在使用@RequestMapping系列注解配置请求路径时,需要使用{}格式的占位符,例如/albums/{id}/delete,并且,在处理请求的方法的相关参数上,添加@PathVariable注解。

另外,还可以在请求参数上添加@RequestParam,此注解可以指定请求参数名称、限制必须提交、配置默认值,但此注解并不是必须的。

1.4关于RESTful

RESTful是一种服务器端软件的设计风格。

RESTful的典型表现是:在URL中会存在某些具有唯一性的参数值,例如id、用户名等。

RESTful还建议根据对数据操作的方式不同,使用不同的请求方式,例如删除数据时应该使用DELETE这种请求方式,但,通常仍只使用GETPOST

RESTful只是一种风格,并不是设计规范。

1.5处理响应

在前后端分离的开发模式下,响应方式都是“响应正文”的,可以:

  • 在方法上添加@ResponseBody
  • 在类上添加@ResponseBody
  • 在类上添加@RestController

以上3种方式均可。

通常,为了保证服务器端响应结果的格式是统一的,会自定义数据类型,封装需要响应的数据,至少包括:

  • 业务状态码
  • 错误时的提示文本
  • 成功时的数据

当处理请求的方法的返回值类型是以上封装的类型(即项目中的JsonResult)时,且当项目中已经添加了jackson-databind依赖时,此依赖项中的Converter会自动将方法返回的对象转换为JSON格式并响应到客户端去。

1.6统一处理异常

自定义统一处理异常的类,在类上添加@ControllerAdvice / @RestControllerAdvice注解。

在类中自定义处理异常的方法:

  • 注解:@ExceptionHandler
  • 访问权限:应该使用public
  • 返回值类型:参考处理请求的方法
  • 方法名称:自定义
  • 参数列表:至少有1个被处理的异常类型参数,可按需添加特定类型的参数,例如HttpServletRequestHttpServletResponse等,但不可以像处理请求的方法那么自由

在同一个项目中,可以有多个统一处理异常的类,每个类中都可以有多个处理异常的方法,只要这些方法处理的异常不完全相同(各方法处理的异常允许存在继承关系)即可。

1.7Spring MVC的核心处理流程

Spring MVC的核心组件:

  • DispathcerServlet:用于统一接收请求,并分发
  • HandlerMapping:记录了请求路径与处理请求的控制器组件的对应关系
  • Controller:实际请求的组件
  • ModelAndView:封装了数据与视图名称的结果
  • ViewResolver:根据视图名称确定实际应用的视图组件

 

1.8小结

关于Spring MVC框架,你应该:

  • 理解Spring MVC框架的作用
  • 掌握使用控制器接收请求,并响应结果
  • 理解JsonResult这种封装响应数据的类型的作用、设计思路
  • 掌握处理异常
  • 理解RESTful

另外,暂未涉及的:

  • Spring MVC拦截器

2.Mybatis框架

2.1关于Mybatis框架

Mybatis框架主要实现了简化数据库编程。

2.2依赖项

通常,使用Mybatis框架时,需要添加依赖:

  • mybatis:Mybatis框架
  • mybatis-spring:Mybatis整合Spring
  • mysql-connector-java:数据库依赖项
  • spring-jdbc:Spring整合JDBC

除此以外,通常还会添加:

  • spring-test:执行测试
  • commons-dbcp / druid等:数据库连接池

在Spring Boot项目中,只需要添加mybatis-spring-boot-startermysql-connector-java即可,测试时,另外添加spring-boot-starter-test

2.3基本配置

在Spring Boot项目中,在application.properties中配置:

  • spring.datasource.url
  • spring.datasource.username
  • spring.datasource.password

然后,需要在配置类上使用@MapperScan指定Mapper接口所在的包,在启动项目时,Mybatis会扫描此包,并找到相关的接口,自动生成这些接口的代理对象。

另外,还需要在application.properties中配置mybatis.mapper-locations属性,用于指定XML文件的位置。

2.4使用Mybatis实现数据库编程

使用Mybatis实现数据库编程主要:

  • 设计Mapper接口中的抽象方法
  • 配置抽象方法映射的SQL语句

关于抽象方法:

  • 返回值类型:增删改使用int,查询只需要保证返回值类型足够装得下查询结果即可
  • 方法名称:自定义,建议参考阿里的规范
  • 参数列表:取决于需要执行的SQL语句中的参数,如果SQL语句中只有1个参数,直接声明为方法的参数即可,如果有多个参数,且这些参数具有相关性,则应该封装,并使用封装的类型作为方法的参数,如果多个参数没有相关性,则一一声明为方法的参数,并且,为每个参数添加@Param注解
    • 在某些集成环境中,多个参数也可以不添加@Param

关于配置SQL语句:

  • 可以使用@Insert等节点配置SQL语句,但是不推荐,推荐使用XML文件来配置SQL语句

  • 必须在<mapper>上配置namespace属性,用于指定对应的接口

  • 使用<insert>等节点配置SQL语句,每个节点必须配置id属性,用于指定对应的抽象方法

  • 在配置<insert>时,如果表的id是自动编号的,则应该配置useGeneratedKeyskeyProperty属性,以获取自动编号的id

  • 在配置<select>时,必须配置resultMapresultType这2个属性中的某1个

  • 可以使用<sql>节点封装SQL语句片段,并使用<include>节点进行引用,通常,使用<sql>封装字段列表

  • 使用<resultMap>节点用于指导Mybatis封装查询结果

  • 使用动态SQL的<foreach>可以实现对数组或List集合类型的参数的遍历

  • 使用动态SQL的<if>可以实现根据参数决定SQL语句中是否包含某个片段,用于处理更新数据的操作时,通常结合<set>节点一起使用

    • 注意:<if>并没有匹配的类似else的节点,如果要实现if...else效果,可以使用2个条件完全相反的<if>,但是,这种做法效率偏低,另外,可以使用<choose>系列节点来实现:

      <choose>
      	<when test="条件">
              满足条件时的SQL语句片段
          </when>
          <otherwise>
              不满足条件时的SQL语句片段
          </otherwise>
      </choose>
      

2.5小结

需要掌握以上所有内容

3.Spring Boot框架

3.1关于Spring Boot框架

Spring Boot是一个基于Spring框架在的Maven项目,每个自行创建的Spring Boot项目都使用了官方的Spring Boot项目作为父级项目!

Spring Boot是一个基于“约定大于配置”思想的、自动完成了许多配置的框架。

Spring Boot框架的基础依赖项是spring-boot-starter,而其它以spring-boot-starter为Artifact前缀的依赖项都包含了它。

3.2关于基础依赖项

spring-boot-starter中,包含的典型依赖项有:

  • Spring框架的基础依赖项:spring-context
  • 日志

所以,任何一个Spring Boot项目,都可以使用Spring框架的特性,并且可以使用日志。

并且,在Spring Boot项目中,默认在src/main/resource下就有application.properties文件,是项目中默认自动读取的配置文件。

3.3关于Profile配置

关于application.properties配置,在不同的环境下,某些配置的值应该是不同的,例如连接数据库的URL、用户名、密码等,所以,应该针对不同的环境,使用不同的配置,即Profile配置。

通常,关于Profile配置,至少分为3类:

  • 开发环境下的配置
  • 测试环境下的配置
  • 生产环境下的配置

甚至,同样是开发环境下,可能因为团队协作开发,各开发人员也使用了不同的配置。

使用Profile配置的方式是:

  • 自行创建application-xxx.properties文件,文件名中的xxx是自定义的名称,通常是devtestprod等,把各个环境下不同的配置编写在此文件中
  • application.properties中使用spring.profiles.active属性激活某个Profile配置,此属性的值就是application-xxx.properties文件中的xxx部分

当使用Profile配置后,这些配置文件默认并不会直接读取并应用,需要被激活才会被读取并应用!

application.properties中的配置是始终被读取并应用的!

3.4关于YAML配置

YAML配置是以.yml作为扩展名的配置文件。

Spring框架本身并不支持读取这类文件,需要额外添加依赖项,在Spring Boot项目中,默认已经集成必要的依赖项,可以直接读取这类文件。

在Spring Boot项目中,可以将.properties的配置完全转移到.yml文件中,并且,同样支持Profile配置,即可以同时存在application.ymlapplication-dev.yml等。

关于YAML配置,其语法特征是:

  • 原有的例如spring.datasource.url这类属性,将根据小数点拆分为2行,每一行使用冒号表示结束,从下一行开始,缩进2个空格(不可以是TAB,但是,IntelliJ IDEA在编辑YAML时,按下的TAB会自动转换成2个空格),当属性名写完后,在冒号右侧添加1个空格,再填写属性值

例如:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mall_pms
    username: root
    password: root
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值