黑马JavaWeb学习笔记--员工分页查询

目录

分页查询(不考虑条件查询版)

页面需求:

Sql语句分析:

服务端返回数据:

分析结果:

具体实现:

Mapper层:

Controller层:

Service层:

章节小结:

使用分页插件—PageHelper

分页查询--条件查询版

Controller层:

Service层:

Mapper层:

小结:


分页查询(不考虑条件查询版)

页面需求:

  • 可以设置每页展示的记录数
  • 可以选择展示第几页
  • 可以跳转到第几页

Sql语句分析:

通过limit来进行分页即可
select * from emp limit 0,5
select * from emp limit 5,5
select * from emp limit 10,5

服务端返回数据:

服务端只需要返回查询到的数据和共有多少个查询结果即可。每页显示的记录数是前端预设好的,然后共有多少页也可以通过前端来计算。

分析结果:

因为服务端需要返回两种响应数据,但是一个方法只有一个返回值,所以考虑使用一个实体类来对结果进行封装,这里使用PageBean的实体类将两种返回结果进行封装然后再统一交给Result.success()结果中。

具体实现:

Mapper层:

Controller层:

前端发送过来的数据,如果形参名中跟前端对应数据名称一样,会自动进行映射匹配。

撒打发

Service层:

章节小结:

使用分页插件—PageHelper

使用插件来简化上述代码,Controller层的代码不需要修改!

        <!--PageHelper分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.2</version>
        </dependency>
    //Mapper层实现的Demo
    @Select("select * from emp")
    public List<Emp> list();
//Service实现类中的Demo
    @Override
    public PageBean page(Integer page, Integer pageSize) {
        //1. 设置分页参数
        PageHelper.startPage(page,pageSize);

        //2. 执行查询
        List<Emp> empList = empMapper.list();
        Page<Emp> p = (Page<Emp>) empList;

        //3. 封装PageBean对象
        PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
        return pageBean;
    }

分页查询--条件查询版

Controller层:

Service层:

Mapper层:

动态SQL需要配置XML文件,需要在Resource文件下创建同包名的文件,但是注意这里需要使用'/'分割,而不是'.'分割。

如果有报错的话可以尝试在Mapper类中对应的函数形参前面添加上@Param注解来进行字段映射!

<?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.itheima.mapper.EmpMapper">
  
    <!--动态SQL语句进行条件查询 id要跟Mapper文件函数名对应,resultType为单个数据的类型这里也就是员工实体类-->
    <select id="list" resultType="com.itheima.pojo.Emp">
        select *
        from emp
        <where><!--where标签会自动处理and关系-->
                <!--name不为null或者不为空字符串的时候才添加该条件-->
            <if test="name != null and name != ''">
                name like concat('%',#{name},'%')
            </if>
            <if test="gender != null">
                and gender = #{gender}
            </if>
            <if test="begin != null and end != null">
                and entrydate between #{begin} and #{end}
            </if>
        </where>
        order by update_time desc
    </select>

</mapper>

小结:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值