diff --git a/pom.xml b/pom.xml
index e38fc3b..f726be1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,6 +67,13 @@
4.3.0
+
+ com.github.pagehelper
+ pagehelper-spring-boot-starter
+ 1.3.0
+
+
+
io.jsonwebtoken
diff --git a/src/main/java/com/genepioneer/common/result/PageResult.java b/src/main/java/com/genepioneer/common/result/PageResult.java
new file mode 100644
index 0000000..406d26b
--- /dev/null
+++ b/src/main/java/com/genepioneer/common/result/PageResult.java
@@ -0,0 +1,15 @@
+package com.genepioneer.common.result;
+
+import lombok.Data;
+import java.util.List;
+
+@Data
+public class PageResult {
+ private long total;
+ private List records;
+
+ public PageResult(long total, List records) {
+ this.total = total;
+ this.records = records;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/genepioneer/controller/LiteratureController.java b/src/main/java/com/genepioneer/controller/LiteratureController.java
index 81ed078..5feaaa8 100644
--- a/src/main/java/com/genepioneer/controller/LiteratureController.java
+++ b/src/main/java/com/genepioneer/controller/LiteratureController.java
@@ -3,6 +3,7 @@ package com.genepioneer.controller;
import com.genepioneer.common.result.PageResult;
import com.genepioneer.common.result.Result;
import com.genepioneer.pojo.dto.LiteratureDTO;
+import com.genepioneer.pojo.dto.LiteraturePageQueryDTO;
import com.genepioneer.service.LiteratureService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -47,13 +48,10 @@ public class LiteratureController {
}
//分页查询
- @GetMapping("/list/{page}/{size}")
+ @GetMapping("/page")
@Operation(summary = "分页查询文献")
- public Result> listLiterature(
- @PathVariable int page,
- @PathVariable int size
- ) {
- PageResult result = literatureService.pageQuery(page, size);
+ public Result> page(LiteraturePageQueryDTO queryDTO) {
+ PageResult result = literatureService.pageQuery(queryDTO);
return Result.success(result);
}
}
\ No newline at end of file
diff --git a/src/main/java/com/genepioneer/mapper/LiteratureMapper.java b/src/main/java/com/genepioneer/mapper/LiteratureMapper.java
index ec6d178..e33e9cb 100644
--- a/src/main/java/com/genepioneer/mapper/LiteratureMapper.java
+++ b/src/main/java/com/genepioneer/mapper/LiteratureMapper.java
@@ -1,6 +1,8 @@
package com.genepioneer.mapper;
+import com.genepioneer.pojo.dto.LiteraturePageQueryDTO;
import com.genepioneer.pojo.entity.LiteratureInfo;
+import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
@@ -21,11 +23,5 @@ public interface LiteratureMapper {
@Delete("DELETE FROM literature_info WHERE id = #{id}")
void deleteLiteratureById(Long id);
- // 查询总数
- @Select("SELECT COUNT(*) FROM literature_info")
- int countLiterature();
-
- // 分页查询
- @Select("SELECT * FROM literature_info ORDER BY id DESC LIMIT #{size} OFFSET #{offset}")
- List selectLiteratureByPage(int offset, int size);
+ Page pageQuery(LiteraturePageQueryDTO queryDTO);
}
\ No newline at end of file
diff --git a/src/main/java/com/genepioneer/pojo/dto/LiteraturePageQueryDTO.java b/src/main/java/com/genepioneer/pojo/dto/LiteraturePageQueryDTO.java
new file mode 100644
index 0000000..b578c16
--- /dev/null
+++ b/src/main/java/com/genepioneer/pojo/dto/LiteraturePageQueryDTO.java
@@ -0,0 +1,18 @@
+package com.genepioneer.pojo.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class LiteraturePageQueryDTO {
+ private Integer page;
+ private Integer pageSize;
+ private String articleTitle;
+ private Integer year;
+ private String journalName;
+ private String literatureType;
+ private String sampleSource;
+ private BigDecimal impactFactorMin;
+ private BigDecimal impactFactorMax;
+}
\ No newline at end of file
diff --git a/src/main/java/com/genepioneer/service/LiteratureService.java b/src/main/java/com/genepioneer/service/LiteratureService.java
index 490188f..8a4501f 100644
--- a/src/main/java/com/genepioneer/service/LiteratureService.java
+++ b/src/main/java/com/genepioneer/service/LiteratureService.java
@@ -2,6 +2,7 @@ package com.genepioneer.service;
import com.genepioneer.common.result.PageResult;
import com.genepioneer.pojo.dto.LiteratureDTO;
+import com.genepioneer.pojo.dto.LiteraturePageQueryDTO;
public interface LiteratureService {
// 新增文献
@@ -11,6 +12,6 @@ public interface LiteratureService {
void deleteLiterature(Long id);
// 文献分页查询
- PageResult pageQuery(int page, int size);
+ PageResult pageQuery(LiteraturePageQueryDTO queryDTO);
}
\ No newline at end of file
diff --git a/src/main/java/com/genepioneer/service/impl/LiteratureServiceImpl.java b/src/main/java/com/genepioneer/service/impl/LiteratureServiceImpl.java
index cc149e7..e084279 100644
--- a/src/main/java/com/genepioneer/service/impl/LiteratureServiceImpl.java
+++ b/src/main/java/com/genepioneer/service/impl/LiteratureServiceImpl.java
@@ -1,7 +1,9 @@
package com.genepioneer.service.impl;
-
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
import com.genepioneer.common.result.PageResult;
import com.genepioneer.pojo.dto.LiteratureDTO;
+import com.genepioneer.pojo.dto.LiteraturePageQueryDTO;
import com.genepioneer.pojo.entity.LiteratureInfo;
import com.genepioneer.mapper.LiteratureMapper;
import com.genepioneer.service.LiteratureService;
@@ -44,25 +46,26 @@ public class LiteratureServiceImpl implements LiteratureService {
/**
* 文献分页查询
- * @param page
- * @param size
+ * @param queryDTO
* @return
*/
@Override
- public PageResult pageQuery(int page, int size) {
- // 查询总数量
- int total = literatureMapper.countLiterature();
- // 分页查询
- int offset = (page - 1) * size;
- List infoList = literatureMapper.selectLiteratureByPage(offset, size);
+ public PageResult pageQuery(LiteraturePageQueryDTO queryDTO) {
- // PO->DTO
- List dtoList = infoList.stream().map(info -> {
+ // 1) PageHelper 开始分页
+ PageHelper.startPage(queryDTO.getPage(), queryDTO.getPageSize());
+
+ // 2) 执行 mapper 查询(会被 PageHelper 自动加 limit)
+ Page page = literatureMapper.pageQuery(queryDTO);
+
+ // 3) 取 total + records
+ long total = page.getTotal();
+ List records = page.getResult().stream().map(info -> {
LiteratureDTO dto = new LiteratureDTO();
BeanUtils.copyProperties(info, dto);
return dto;
}).collect(Collectors.toList());
- return new PageResult<>(total, dtoList);
+ return new PageResult<>(total, records);
}
}
\ No newline at end of file
diff --git a/src/main/resources/mapper/LiteratureMapper.xml b/src/main/resources/mapper/LiteratureMapper.xml
new file mode 100644
index 0000000..594d0db
--- /dev/null
+++ b/src/main/resources/mapper/LiteratureMapper.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+