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 @@ + + + + + + +