Mybatis

数据库连接池

  1. 概念
    数据库连接池是个容器,负责分配、管理数据库连接
    它允许应用程序使用一个现有的数据库连接,而不是再建立一个
    释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏
  2. 实现
    标准接口:DataSource
    官方提供的数据库连接池接口,由第三方组织实现此接口
    常见产品:C3P0,DBCP,Druid,Hikari(springboot默认)

增删改查

  1. delete
    Mapper接口:
    @Delete(“delete from user where id = #{id}”)
    public void deleteById(Integer id);

  2. Mybatis 中的 # 和 $

#{…} 占位符 执行时,会将#{…} 替换为?,生成预编译 SQL 用于参数值传递 安全,性能高
${…} 拼接符 直接将参数拼接再 SQL 语句中,存在 SQL 注入问题 用于表名、字段名动态设置时使用 不安全、性能低

  1. insert
    Mapper接口:
    @Insert(“insert into user(username,password,name,age) values(#{username},#{password},#{name},#{age})”)
    public void insert(User user);

  2. update
    Mapper接口:
    @Update(“update user set username = #{username},password = #{password},name = #{name},age = #{age} where id = #{id})
    public void update(User user);

  3. select
    Mapper接口:
    @Select(“select * from user where username = #{username} and password = #{password}”)
    public User fingbyUsernameAndPaswword(@Param(“username”) String username,@Param(“password”) String password);
    @Param 注解的作用是为接口的方法形参起名字
    说明:基于官方骨架创建的 springboot 项目中,接口编译时会保留方法形参名,@Param 注解可以省略

springboot 项目配置文件

yml 配置文件:
格式
1 数值前边必须有空格,作为分隔符
2 使用缩进表示层级关系,缩进时,不允许使用 Tab 键,只能用空格(idea 中会自动将 Tab 转化为空格)
3 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
4 # 表示注释,从这个字符一直到行尾,都会被解析器忽略
定义对象/Map 集合

1
2
3
4
5
6
user:
name: 张三
age: 18
password: 123456
```
**定义数组/List/Set 集合**

hobby:
- java
- game
- sport

*注意:在 yml 格式的配置文件中,如果配置项的值是以 0 开头的,值需要使用'' 引起来,因为以 0 开头在 yml 中表示 8 进制的数据*  
## 开发规范  
1. 开发模式:  
前后端分离开发:  
前端项目、后端项目 开发和部署是分开的   
具体的开发流程:  
需求分析 -> 接口设计 -> 前后端并行开发 -> 测试 -> 联调  

2. Restful 风格  
Rest(表述性状态转换),它是一种软件架构风格  
Rest 风格:  
URL 定位资源,HTTP 动词描述操作    
请求方式:  
GET:查询  
DELETE:删除  
POST:新增用户  
PUT:修改   
*注意:1. REST 是风格,是约定方式,不是规定,可以打破;2.描述功能模块通常使用复数形式,表示此类资源而非单个资源,如:users...*  

3. Apifox  
Apifox 是一款集成了 Api 文档、Api 调试、Api Mock、Api 测试的一体化协作平台  
作用:接口文档管理、接口请求测试、Mock 服务    
由于浏览器地址栏发起的请求,都是 GET 方式的请求,如果我们需要发起 POST、PUT、DELETE 方式的请求,需要借助该类工具  

4. JWT:
JWT(JSON Web Token)是一种无状态登录认证机制  
核心思想:  
不保存登录状态,登录成功后生成一个加密字符串(token),把用户信息加密进 token 里返回给前端  
前端请求带 token,服务器验证 token,解析出用户信息  
**JWT结构**  
Header(头部)  
Payload(载荷)  
Signature(签名):服务器用密钥生成签名,防止伪造,有人改 Payload,签名就会失效