web基础
# web基础
# 零碎概念
学习什么是JPA、H2 用来干啥?参考:https://www.pdai.tech/md/project/project-a-2-1.html
JDBC(JavaDataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句的一个驱动。
ORM 对象关系映射(Object Relational Mapping,简称ORM), 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。
MyBatis是对JDBC的封装, 是常用的ORM框架之一。MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
# PageHelper是如何实现分页的?
理解它的原理,有两个点:第一,相对对于JDBC这种嵌入式的分页而言,PageHelper分页是独立的,能做到独立分页查询,那它必然是通过某个拦截点进行了拦截,这样它才能够进行解耦分离出分页。第二,我们通过PageHelper.startPage(pageNum, pageSize, orderBy)方法后的第一个select是具备分页能力的,那它必然缓存了分页信息,同时结合线程知识,这里必然使用的是本地栈ThreadLocal,即每个线程有一个本地缓存。所以结合这两点,聪明的你就会想到它大概是如何实现的,关键就是两点(拦截,ThreadLocal), 我们看下源码:
## 重要提示
### `PageHelper.startPage`方法重要提示
只有紧跟在`PageHelper.startPage`方法后的<b>第一个</b>Mybatis的<b>查询(Select)</b>方法会被分页。
### 请不要配置多个分页插件
请不要在系统中配置多个分页插件(使用Spring时,`mybatis-config.xml`和`Spring<bean>`配置方式,请选择其中一种,不要同时配置多个分页插件)!
### 分页插件不支持带有`for update`语句的分页
对于带有`for update`的sql,会抛出运行时异常,对于这样的sql建议手动分页,毕竟这样的sql需要重视。
### 分页插件不支持嵌套结果映射
由于嵌套结果方式会导致结果集被折叠,因此分页查询的结果在折叠后总数会减少,所以无法保证分页结果数量正确。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 前置
比起认知来说,认知效率更为重要。
- 行动很重要, 千里之行始于足下。
- 有人指路和没人指路差别很大。
- 阶段性目标。
- 获得正反馈。
- 圈子很重要。
- 战术上重视,战略上藐视。这绝对不是一句空话。