跨域+模糊分页查询

This commit is contained in:
dww
2025-12-27 15:02:10 +08:00
parent 5312fddf71
commit 0b51f007f8
8 changed files with 93 additions and 26 deletions

View File

@@ -67,6 +67,13 @@
<version>4.3.0</version> <version>4.3.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!-- JWT依赖生成/解析令牌) --> <!-- JWT依赖生成/解析令牌) -->
<dependency> <dependency>
<groupId>io.jsonwebtoken</groupId> <groupId>io.jsonwebtoken</groupId>

View File

@@ -0,0 +1,15 @@
package com.genepioneer.common.result;
import lombok.Data;
import java.util.List;
@Data
public class PageResult<T> {
private long total;
private List<T> records;
public PageResult(long total, List<T> records) {
this.total = total;
this.records = records;
}
}

View File

@@ -3,6 +3,7 @@ package com.genepioneer.controller;
import com.genepioneer.common.result.PageResult; import com.genepioneer.common.result.PageResult;
import com.genepioneer.common.result.Result; import com.genepioneer.common.result.Result;
import com.genepioneer.pojo.dto.LiteratureDTO; import com.genepioneer.pojo.dto.LiteratureDTO;
import com.genepioneer.pojo.dto.LiteraturePageQueryDTO;
import com.genepioneer.service.LiteratureService; import com.genepioneer.service.LiteratureService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
@@ -47,13 +48,10 @@ public class LiteratureController {
} }
//分页查询 //分页查询
@GetMapping("/list/{page}/{size}") @GetMapping("/page")
@Operation(summary = "分页查询文献") @Operation(summary = "分页查询文献")
public Result<PageResult<LiteratureDTO>> listLiterature( public Result<PageResult<LiteratureDTO>> page(LiteraturePageQueryDTO queryDTO) {
@PathVariable int page, PageResult<LiteratureDTO> result = literatureService.pageQuery(queryDTO);
@PathVariable int size
) {
PageResult<LiteratureDTO> result = literatureService.pageQuery(page, size);
return Result.success(result); return Result.success(result);
} }
} }

View File

@@ -1,6 +1,8 @@
package com.genepioneer.mapper; package com.genepioneer.mapper;
import com.genepioneer.pojo.dto.LiteraturePageQueryDTO;
import com.genepioneer.pojo.entity.LiteratureInfo; import com.genepioneer.pojo.entity.LiteratureInfo;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -21,11 +23,5 @@ public interface LiteratureMapper {
@Delete("DELETE FROM literature_info WHERE id = #{id}") @Delete("DELETE FROM literature_info WHERE id = #{id}")
void deleteLiteratureById(Long id); void deleteLiteratureById(Long id);
// 查询总数 Page<LiteratureInfo> pageQuery(LiteraturePageQueryDTO queryDTO);
@Select("SELECT COUNT(*) FROM literature_info")
int countLiterature();
// 分页查询
@Select("SELECT * FROM literature_info ORDER BY id DESC LIMIT #{size} OFFSET #{offset}")
List<LiteratureInfo> selectLiteratureByPage(int offset, int size);
} }

View File

@@ -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;
}

View File

@@ -2,6 +2,7 @@ package com.genepioneer.service;
import com.genepioneer.common.result.PageResult; import com.genepioneer.common.result.PageResult;
import com.genepioneer.pojo.dto.LiteratureDTO; import com.genepioneer.pojo.dto.LiteratureDTO;
import com.genepioneer.pojo.dto.LiteraturePageQueryDTO;
public interface LiteratureService { public interface LiteratureService {
// 新增文献 // 新增文献
@@ -11,6 +12,6 @@ public interface LiteratureService {
void deleteLiterature(Long id); void deleteLiterature(Long id);
// 文献分页查询 // 文献分页查询
PageResult<LiteratureDTO> pageQuery(int page, int size); PageResult<LiteratureDTO> pageQuery(LiteraturePageQueryDTO queryDTO);
} }

View File

@@ -1,7 +1,9 @@
package com.genepioneer.service.impl; package com.genepioneer.service.impl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.genepioneer.common.result.PageResult; import com.genepioneer.common.result.PageResult;
import com.genepioneer.pojo.dto.LiteratureDTO; import com.genepioneer.pojo.dto.LiteratureDTO;
import com.genepioneer.pojo.dto.LiteraturePageQueryDTO;
import com.genepioneer.pojo.entity.LiteratureInfo; import com.genepioneer.pojo.entity.LiteratureInfo;
import com.genepioneer.mapper.LiteratureMapper; import com.genepioneer.mapper.LiteratureMapper;
import com.genepioneer.service.LiteratureService; import com.genepioneer.service.LiteratureService;
@@ -44,25 +46,26 @@ public class LiteratureServiceImpl implements LiteratureService {
/** /**
* 文献分页查询 * 文献分页查询
* @param page * @param queryDTO
* @param size
* @return * @return
*/ */
@Override @Override
public PageResult<LiteratureDTO> pageQuery(int page, int size) { public PageResult<LiteratureDTO> pageQuery(LiteraturePageQueryDTO queryDTO) {
// 查询总数量
int total = literatureMapper.countLiterature();
// 分页查询
int offset = (page - 1) * size;
List<LiteratureInfo> infoList = literatureMapper.selectLiteratureByPage(offset, size);
// PO->DTO // 1) PageHelper 开始分页
List<LiteratureDTO> dtoList = infoList.stream().map(info -> { PageHelper.startPage(queryDTO.getPage(), queryDTO.getPageSize());
// 2) 执行 mapper 查询(会被 PageHelper 自动加 limit
Page<LiteratureInfo> page = literatureMapper.pageQuery(queryDTO);
// 3) 取 total + records
long total = page.getTotal();
List<LiteratureDTO> records = page.getResult().stream().map(info -> {
LiteratureDTO dto = new LiteratureDTO(); LiteratureDTO dto = new LiteratureDTO();
BeanUtils.copyProperties(info, dto); BeanUtils.copyProperties(info, dto);
return dto; return dto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
return new PageResult<>(total, dtoList); return new PageResult<>(total, records);
} }
} }

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.genepioneer.mapper.LiteratureMapper">
<select id="pageQuery" resultType="com.genepioneer.pojo.entity.LiteratureInfo">
select *
from literature_info
<where>
<if test="year != null">
and year = #{year}
</if>
<if test="articleTitle != null and articleTitle != ''">
and article_title like concat('%', #{articleTitle}, '%')
</if>
<if test="journalName != null and journalName != ''">
and journal_name like concat('%', #{journalName}, '%')
</if>
<if test="literatureType != null and literatureType != ''">
and literature_type = #{literatureType}
</if>
<if test="sampleSource != null and sampleSource != ''">
and sample_source like concat('%', #{sampleSource}, '%')
</if>
</where>
order by id desc
</select>
</mapper>