SpringBoot+Mybatis实现分页查询(原生查询和使用PageHelper查询)

SpringBoot+Mybatis实现分页查询(原生查询和使用PageHelper查询)

postman测试查询结果

依赖配置

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.2</version>
        </dependency>

数据库对应student实体类和Page类

@Data
public class student {
    private BigInteger STUDENT_ID;
    private String STUDENT_NAME;
    private String CREATE_TIME;
}
@Data
public class page {
    private Integer total;
    private List<student> stu;

    public page(Integer total, List<student> stu) {
        this.total = total;
        this.stu = stu;
    }
}

Controller,使用pagehelper和原生查询这里是相同的

@RestController
@RequestMapping("/page")
public class test {

    @Autowired
    private StuService ss;

    @GetMapping("/see")
    //传参为当前页码数page和每页所要展示的记录数pageSize
    public error see(@RequestParam Integer page, Integer pageSize){

        page stus = ss.stus(page, pageSize);
        //做判断是否查询到数据
        boolean empty = stus.getStu().isEmpty();
        return error.is(stus,empty);
    }

}

返回结果类和枚举类

@Data
public class error<T> {
    private int code;
    private String msg;
    private T data;

    public static <T> error<T> is(T object,boolean a){
        error<T> res = new error<>();
        //controller查询为空返回fail,不为空返回success
        if(a){
            res.code=result.FAIL.getCode();
            res.msg= result.FAIL.getMsg();
        }else{
            res.code=result.SUCCESS.getCode();
            res.msg= result.SUCCESS.getMsg();
            res.data=object;
        }
        return res;
    }

}
@Getter
public enum result {
    SUCCESS(200,"成功"),
    FAIL(300,"失败");

    private Integer code;
    private String msg;

    result(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}

StuMapper

@Mapper
public interface StuMapper {

    //原生分页查询
//    List<student> stus(Integer page, Integer pageSize);

    //pagehelper分页查询
    List<student> stus();

    //查询总记录数
    int selectCount();
}

StuMapper.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.mapper.StuMapper">
    <!--      原生分页查询     -->
<!--    <select id="stus" resultType="com.domain.student">-->
<!--        select STUDENT_ID,STUDENT_NAME,CREATE_TIME from school_student limit #{page},#{pageSize};-->
<!--    </select>-->

<!--    pagehelper分页查询,pagehelper会自动拼接limit,所以这里查询全部记录即可,注意sql末尾不要加";",否则会报错 -->
    <select id="stus" resultType="com.domain.student">
        select STUDENT_ID,STUDENT_NAME,CREATE_TIME from school_student
    </select>


    <select id="selectCount" resultType="java.lang.Integer">
        select count(*) from school_student;
    </select>

</mapper>

Service

public interface StuService {
    page stus(Integer page, Integer pageSize);
}
@Service
public class StuServiceImpl implements StuService {

    @Autowired
    private StuMapper sm;

    @Override
    public page stus(Integer page, Integer pageSize) {
        //原生分页查询
//        int count=sm.selectCount();
//        Integer startIndex=(page-1)*pageSize;
//        List<student> stus = sm.stus(startIndex, pageSize);
//        page p=new page(count,stus);
//        return p;

        //pagehelper分页查询
        int count=sm.selectCount();//总记录数
        //开启分页
        PageHelper.startPage(page,pageSize);
        
        List<student> stus = sm.stus();
        
        page p=new page(count,stus);
        return p;
    }
}

整体目录结构

注意StuMapper和StuMapper.xml的目录要相同,否则可能会报错,比如StuMapper在包com.mapper目录下,那么StuMapper.xml也一定要在com/mapper/目录下来创建

扫描src/main/java目录下的所有配置文件,放在pom的build标签里

<resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.yml</include>
                    <include>**/*.ini</include>
                </includes>
            </resource>
        </resources>
  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值