type
status
date
summary
slug
tags
category
password
icon

接口发布与接收案例背景知识

第1章 Mybatis

1.1 MyBatis介绍

1.1.1 JDBC的痛点

notion image
JDBC是Java中对数据库进行读写的标准,原生JDBC的痛点在于:
  • SQL夹在Java代码块里,耦合度高导致每次修改SQL都需要重新测试、编译、打包、部署,维护不易。
  • 大量冗余的模板代码,编写起来费力。

1.1.2 程序员的诉求

对于开发人员而言,我们希望掌握核心科技,即SQL由我们自己编写,而其他的脏活累活由框架为我们自动完成。
notion image

1.1.3 Mybatis简介

Mybatis是一个java编写的轻量级(使用方式简单)的半自动(sql自己写,其他框架做)的ORM映射的Dao层框架。
  • Dao(Database Access Object)
    • 指java程序中专门用于访问数据库的对象:
notion image
  • ORM(Object Relational Mapping)
    • 指将Java程序中封装数据的Bean和数据库中保存数据的表结构进行映射。
notion image
  • ORM的规则:
    • 一种Bean对应一张表。
    • Bean的一个属性对应表的一列。
    • 一个Bean对应数据库中的一行。
    • 读数据库即把表中的行封装为一个Bean。
    • 写数据库即把Bean中的属性写入到表中行的列中。

1.2 数据准备

helloworld案例以查询数据库中指定id的员工为例。

1.2.1 准备数据

1.2.2 建工程

创建IDEAproject,在相关的module的pom中添加如下依赖:

1.2.3 Employee类

创建如下Bean:

1.2.4 Mybatis的全局配置

在resources目录下加入mybatis的全局配置文件:
notion image

1.3. HelloWorld

  • 在此,推荐使用接口式编程开发。
    • 即在接口中明确Dao层对象方法的参数类型和返回值类型,通过接口中的Dao层方法,调用SQL。
  • 这对编写SQL的xml文件提出以下硬性要求:
    • namespace:必须和接口的全类名一致。
    • sql的id:必须和对应的方法名一致。
    • select标签中,返回值类型及参数类型也必须和对应的方法一致。

1.3.1 编写Dao层接口

Dao层接口在Mybatis中习惯称为Mapper
在接口上使用@Select注解表明当前方法被调用时,会执行一个Select语句。
在接口上使用@Delete注解表明当前方法被调用时,会执行一个Delete语句。
在接口上使用@Update注解表明当前方法被调用时,会执行一个Update语句。
在接口上使用@Insert注解表明当前方法被调用时,会执行一个Insert语句。
编写完后,需要在全局的配置文件mybatis_config.xml中进行注册,注册的目的是告知Mybatis,哪里有可以发送给Mysql服务端的SQL语句。

1.3.2 Mapper的使用步骤

  • SqlSession由于不是线程安全的,因此不能作为静态变量或实例变量,而应该在每个方法中单独获取,并且使用完成后关闭。
  • 不可以在多个方法中共享sqlSession。

1.3.3 测试代码

1.4 解决属性无法封装问题

在mybatis_config.xml中添加如下配置:

第2章 SpringBoot

2.1. SpringBoot简介

2.1.1 SpringBoot

  • Spring是JavaEE开发中最常用的基础框架,它基于IOC(inverse of control)理念和容器思想,让JavaEE的开发更简洁。
  • 开发人员只需要专注于自己的业务逻辑,而其他的底层基础设施则由Spring进行管理,在程序需要的地方进行自动注入。
  • Spring让开发更加简洁,代码的可读性和可维护性更强,更加优雅。
    • 不使用Spring开发:
      • notion image
    • 使用Spring开发:
      • notion image
        notion image

2.1.2 SpringBoot简介

  • SpringBoot的作用是为了在使用Spring的应用进行开发时,简化配置。并且以最简单的方式来整合第三方的应用,例如Redis,Mybatis,SpringBoot等。
  • SpringBoot顺应了可拔插的插件式开发思想,需要集成什么框架,只需要引入此框架提供的SpringBoot-starter即可。
notion image

2.2 SpringBoot的配置文件

SpringBoot环境下常用的配置文件有两种
  • properties属性文件
  • yml文件
二者仅仅是语法不通,但是最终效果一致。
yml适合配置多嵌套层级关系的属性,而properties则更为直观。
如果两个配置文件中有同名的属性,那么以properties为准

2.3 搭建工程

notion image
确定自己项目的GAV坐标:
notion image
选择自己需要的组件:
notion image
创建后的结构如下图:
notion image

2.4 发送请求

2.4.1 URL路径

以/开头的为绝对路径。不以/开头的为相对路径。
一般页面中以编写绝对路径作为规范。

2.4.2 请求方式

在Http协议中,一共定义了9种请求方式,但是常用的是GET和POST。
请求体:

2.4.3 发送请求

浏览器的地址栏和<a>标签只能发送GET请求。
可以通过web测试工具模拟Get或Post请求,例如使用ApiPost工具:
notion image
POST请求的请求体可以在浏览器的F12选项中查看:
notion image

2.5 接收请求参数

前端发送的请求参数为name=value格式,在后端处理时,只需要在处理方法的参数列表中声明和请求参数名name一样的参数名,就可以收到。
前端发送的请求参数如果为json格式,那么可以在请求方法的参数位置声明Map或Bean类型接受,在Bean或Map前面标注@RequestBody注解,可以直接将json中的属性解析后赋值给Map或Bean。
!
notion image

2.6 返回数据

在处理请求的方法上标注@ResponseBody注解,可以把处理方法的返回值作为响应体返回给前端。
如果返回值是字面量,则直接返回。如果返回值是非字面量,则会将返回值转换为json后再返回。
也可以直接在控制器类上标注@RestController注解,那么这个控制器的所有方法都将自动添加@ResponseBody注解。

第3章 SpringBoot案例

3.1 业务开发

根据提供的web页面,完成对Employee的增删改查功能。

3.1.1 MVC

MVC(model view controller)是一个web应用开发时要遵守的开发规范。
  • View:视图,和用户交互的界面
  • Controller:控制器。控制整个流程的运行。
  • Model:模型
  • service:业务模型
  • bean:数据模型
notion image
notion image

3.1.2 前端页面

前端页面不要求掌握,只需要拷贝到resource目录下的static目录中即可。
notion image

3.1.3 Bean

3.1.4 Dao

3.1.5 Service

3.1.6 Controller

3.2 整合Mybatis

3.2.1 依赖整合

在pom.xml中添加如下依赖:

3.2.2 配置整合

在application.yml(如果没有,可以自己新建)中增加数据库环境配置信息。

3.3 整合数据源

3.3.1 引入

在一个项目中,如果需要同时去查询不同的数据源例如同时查询Mysql和Clickhouse或者同时查询一个数据源的两个库。传统的实现方式非常繁琐。
这里使用baomidou框架进行动态数据源的切换。

3.3.2 添加依赖

baomidou必须结合SpringBoot一起使用。如果引入了数据库连接池,需要注释掉,否则会产生冲突。baomidou自带连接池

3.3.3 集成配置

增加以下配置:

3.3.4 使用

在Dao层的Mapper中使用DS(数据源)来指定某个类的全部方法或某个方法使用某个指定的数据源。

3.4 SpringBoot常用注解总结

注解
常见标注位置
作用
@Controller
标识当前类是控制器,且在容器中创建当前类的单例对象。
@Service
标识当前类是业务模型类,且在容器中创建当前类的单例对象。
@ResponseBody
方法
将方法的返回值作为响应体返回,如果返回值为字面量则直接返回,如果为非字面量则转为json后返回
@RequestBody
参数
用于将前台传入的json格式数据转为Bean或Map
@RestController
作用等于@Controller + 为此类的所有方法都默认添加@ResponseBody注解
@Autowired
属性
从容器中找到和此属性类型一致的Bean。找到就赋值,找不到就报错
@RequestMapping
方法
指定当前方法所处理的url
@Mapper
Dao
需要引入mybatis,表明使用动态代理的方式在容器中为Mapper创建对象
@DS
Dao类或方法
需要引入baomidou动态数据源,指定方法访问的数据源
数据同步工具 - NiFi数据可视化的历史
Loading...