type
status
date
summary
slug
tags
category
password
icon
接口发布与接收案例背景知识
第1章 Mybatis
1.1 MyBatis介绍
1.1.1 JDBC的痛点
JDBC是Java中对数据库进行读写的标准,原生JDBC的痛点在于:
- SQL夹在Java代码块里,耦合度高导致每次修改SQL都需要重新测试、编译、打包、部署,维护不易。
- 大量冗余的模板代码,编写起来费力。
1.1.2 程序员的诉求
对于开发人员而言,我们希望掌握核心科技,即SQL由我们自己编写,而其他的脏活累活由框架为我们自动完成。
1.1.3 Mybatis简介
Mybatis是一个java编写的轻量级(使用方式简单)的半自动(sql自己写,其他框架做)的ORM映射的Dao层框架。
- Dao(Database Access Object)
- 指java程序中专门用于访问数据库的对象:
- ORM(Object Relational Mapping)
- 指将Java程序中封装数据的Bean和数据库中保存数据的表结构进行映射。
- 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的全局配置文件:
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开发:
- 使用Spring开发:
2.1.2 SpringBoot简介
- SpringBoot的作用是为了在使用Spring的应用进行开发时,简化配置。并且以最简单的方式来整合第三方的应用,例如Redis,Mybatis,SpringBoot等。
- SpringBoot顺应了可拔插的插件式开发思想,需要集成什么框架,只需要引入此框架提供的SpringBoot-starter即可。
2.2 SpringBoot的配置文件
SpringBoot环境下常用的配置文件有两种
- properties属性文件
- yml文件
二者仅仅是语法不通,但是最终效果一致。
yml适合配置多嵌套层级关系的属性,而properties则更为直观。
如果两个配置文件中有同名的属性,那么以properties为准。
2.3 搭建工程
确定自己项目的GAV坐标:
选择自己需要的组件:
创建后的结构如下图:
2.4 发送请求
2.4.1 URL路径
以/开头的为绝对路径。不以/开头的为相对路径。
一般页面中以编写绝对路径作为规范。
2.4.2 请求方式
在Http协议中,一共定义了9种请求方式,但是常用的是GET和POST。
- GET请求方式在发送请求时,会把参数附加在url后面。例如:
- POST请求方式在发送请求时,会把参数附加在请求体中,例如:
请求体:
2.4.3 发送请求
浏览器的地址栏和<a>标签只能发送GET请求。
可以通过web测试工具模拟Get或Post请求,例如使用ApiPost工具:
POST请求的请求体可以在浏览器的F12选项中查看:
2.5 接收请求参数
前端发送的请求参数为name=value格式,在后端处理时,只需要在处理方法的参数列表中声明和请求参数名name一样的参数名,就可以收到。
前端发送的请求参数如果为json格式,那么可以在请求方法的参数位置声明Map或Bean类型接受,在Bean或Map前面标注@RequestBody注解,可以直接将json中的属性解析后赋值给Map或Bean。
!
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:数据模型
3.1.2 前端页面
前端页面不要求掌握,只需要拷贝到resource目录下的static目录中即可。
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动态数据源,指定方法访问的数据源 |
- 作者:PH3C
- 链接:https://notion.966699.xyz//article/mybatis
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章