mid - SpringBoot配置 & 分页

SpringBoot 属性 & 多环境 & 部署

jar包运行属性配置

  • --键=值 –> --server.port=10010
1
2
C:\Users\Administrator\Desktop\big-event\target>
java -jar big-event-1.0-SNAPSHOT. jar --server.port=9999
1
2
3
4
5
public class Solution{
// --参数会传给主函数作为形参
public static void main(String[] args){
}
}

属性配置方式

按系统优先级从低到高

  • 项目中resources目录下的application.yml
  • jar包所在目录下的application.yml
  • 操作系统环境变量
  • 命令行参数

环境部署

让java类变成jar包

依赖引入jar包插件

1
2
3
4
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId><version>3.1.3</version>
</pluqin>

Q&A

  • jar包生成: 执行package命令即可
  • jar包运行: java -jar jarPos
  • jar包部署: 必须有 jre 环境

多环境开发

Profiles

Springboot提供的Profiles可以用来隔离应用程序配置的各个部分,
并在特定环境下指定部分配置生效

1
2
3
4
5
6
7
8
9
10
11
12
13
+ 如何分割不同环境配置?
---

+ 如何指定哪些配置属于哪个环境?
spring:
config:
activate:
on-profile: 环境名称

+ 如何指定哪个环境配置生效?
spring:
profiles:
activate:环境名称

文件配置

单文件配置

  • --- 来分割不同环境配置
  • spring.config.activate.on-profile配置所属环境
  • spring.profiles.active激活环境

多文件配置

  • 通过多个文件分别配置不同环境的属性
  • 文件命名格式: application-envirName.yml
  • 在application.yml中激活环境
Pasted image 20260402205916 #### 分组问题 - 按照配置的类别,把配置信息配置到不同的配置文件中 application-分类名.yml - 在application.yml中定义分组 spring.profiles.group - 在application.yml中激活分组 spring.profiles.active

数据分页 PageHelper

PageHelper 是 MyBatis 生态里一个很常用的 分页插件
它的作用很直接:
自动改造成分页查询。

**PageHelper 负责分页  
Page / PageInfo 负责拿分页结果  
PageBean 负责统一接口返回结构**

原理

1
2
3
4
5
6
7
8
9
10
11
12
13
你调用 startPage(pageNum, pageSize)

PageHelper 把分页参数放到当前线程上下文里

执行 mapper 查询

分页拦截器拦截这条 SQL

自动拼接 limit

再查 total 总记录数

返回 Page 对象

比如你原本查文章列表:

1
select * from article

用了 PageHelper 之后,它会帮你在 SQL 层面加上分页逻辑,类似:

1
select * from article limit ?, ?

并且还会额外帮你查:

1
select count(*)

所以它不是 Java 代码里手动截 List。
它是拦截 SQL,然后改写 SQL

使用

引入依赖不必说: pagehelper-spring-boot-starter

1. 查询前开启分页

1
PageHelper.startPage(pageNum, pageSize);

2. 调用mapper拿数据

1
2
List<Article> list = 
articleMapper.list(userId, categoryId, state);

3. 取出分页结果

1
2
3
4
5
6
7
8
9
Page<Article> page = (Page<Article>) list;

long total = page.getTotal();
List<Article> items = page.getResult();

//封装返回
PageBean<Article> pb = new PageBean<>();
pb.setTotal(total);
pb.setItems(items);

注意这里的pageBean要自己编写, 如果前端只要

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Override
public PageBean<Article> list(Integer pageNum, Integer pageSize, Integer categoryId, String state) {
// 1. 创建 PageBean 对象
PageBean<Article> pb = new PageBean<>();

// 2. 开启分页
PageHelper.startPage(pageNum, pageSize);

// 3. 获取当前登录用户 id
Map<String, Object> map = ThreadLocalUtil.get();
Integer userId = (Integer) map.get("id");

// 4. 查询文章列表
List<Article> as = articleMapper.list(userId, categoryId, state);

// 5. PageHelper 查询后的结果,底层会返回 Page
Page<Article> p = (Page<Article>) as;

// 6. 把数据封装到 PageBean
pb.setTotal(p.getTotal());
pb.setItems(p.getResult());

return pb;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PageHelper

开启分页

mapper 查询

返回 Page / List

Page / PageInfo

拿到 total、list 等分页信息

PageBean

你自己再封装成项目统一返回格式

动态SQL

MyBatisAPI