分页查询

如何编写分页查询代码

使用JPA编写

用于简单的对象分页查询

  1. 编写查询对象

注意继承了PageInfo类

@Data
public class xxxQuery extends PageInfo {
    /**
     * 调用人
     */
    @ApiModelProperty(value = "调用人ID")
    private String param;
}
  1. 编写分页查询接口
@Repository
public interface YourRepository extends JpaRepository<YourEntity, Integer> {
    Page<YourEntity> findByParamContains(String param, Pageable request);
}
  1. 业务层调用
    public Page<YourEntity> findByParamContains(xxxQuery query) {
        return repository.findByParamContains(query.getParam(),query.getRequest());
    }

MyBatis的分页接口写法

用于复杂的多表关联的分页接口写法

  1. 编写查询对象

注意继承了PageInfo类

@Data
public class xxxQuery extends PageInfo {
    /**
     * 调用人
     */
    @ApiModelProperty(value = "调用人ID")
    private String param;
}
  1. 编写dao层

注意这里是查询列表即可

   /**
     * 查询日志记录
     *
     * @param logQueryDTO 查询条件
     * @return 返回结果
     */
    List<xxxDTO> getByQuery(@Param("dto") xxxQuery query);
  1. 编写对应的mapper.xml
<?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.hvisions.xxx.dao.xxxMapper">

    <resultMap id="log" type="com.hvisions.xxxDTO">
    </resultMap>

    <select id="getLogByQuery" resultMap="log" parameterType="com.hvisions.xxxDTO" >
        select * from tableA t1
        join tableB t2 on t1.id = t2.joinId
        <where>
            <if test="dto.param!=null and dto.param != ''">
                t1.param= #{dto.param}
            </if>
        </where>
    </select>
</mapper>
  1. 在应用层调用
PageHelperUtil.getPage(mapper::getByQuery, query);
2023-03-13
0