MyBatis分页插件应用

MyBatis分页插件应用

1、前台代码(element-ui结构省略)

1.1 定义分页相关模型数据

pagination: {//分页相关模型数据
  currentPage: 1,//当前页码
  pageSize:10,//每页显示的记录数
  total:0,//总记录数
  queryString:null//查询条件
},
dataList: [],//当前页要展示的分页列表数据

1.2 分页定义方法

在页面中提供了findPage方法用于分页查询,为了能够在checkitem.html页面加载后直接可以展示分页数据,可以在VUE提供的钩子函数created中调用findPage方法

//钩子函数,VUE对象初始化完成后自动执行
created() {
  this.findPage();
}

1.3 完善分页方法执行时机

除了在created钩子函数中调用findPage方法查询分页数据之外,当用户点击查询按钮或者点击分页条中的页码时也需要调用findPage方法重新发起查询请求。

为查询按钮绑定单击事件,调用findPage方法

<el-button @click="findPage()" class="dalfBut">查询</el-button>

为分页条组件绑定current-change事件,此事件是分页条组件自己定义的事件,当页码改变时触发,对应的处理函数为handleCurrentChange

<el-pagination
               class="pagiantion"
               @current-change="handleCurrentChange"
               :current-page="pagination.currentPage"
               :page-size="pagination.pageSize"
               layout="total, prev, pager, next, jumper"
               :total="pagination.total">
</el-pagination>

定义handleCurrentChange方法

//切换页码
handleCurrentChange(currentPage) {
  //currentPage为切换后的页码
  this.pagination.currentPage = currentPage;
  this.findPage();
}

2、后台代码

2.1 Controller

在CheckItemController中增加分页查询方法

    // 检查项分页查询
    @RequestMapping("/findPage")
    public PageResult add(@RequestBody QueryPageBean queryPageBean){
        PageResult pageResult = checkItemService.pageQuery(queryPageBean);
        return pageResult;
    }

2.2 服务接口

在CheckItemService服务接口中扩展分页查询方法

public interface CheckItemService {
    PageResult pageQuery(QueryPageBean queryPageBean);
}

2.3 服务实现类

在CheckItemServiceImpl服务实现类中实现分页查询方法,基于Mybatis分页助手插件实现分页

@Override // 检查项分页查询
    public PageResult pageQuery(QueryPageBean queryPageBean) {
        Integer currentPage = queryPageBean.getCurrentPage();
        Integer pageSize = queryPageBean.getPageSize();
        String queryString = queryPageBean.getQueryString();
        // 做的时候发现的一个bug,在除了第一页按条件查询的时候,不显示查询结果,原因就是当前页面不为第一页,所以要判断是否有查询条件,有则将当前页面设置为第一页
        if(queryString != null && queryString.length() > 0){
            currentPage = 1;
        }
        // 完成分页插件,基于mybatis框架提供的分页助手插件完成
        PageHelper.startPage(currentPage, pageSize);
        Page<CheckItem> page = checkItemDao.selectByCondition(queryString);
        long total = page.getTotal();
        List<CheckItem> rows = page.getResult();
        return new PageResult(total,rows);
    }

2.4 Dao接口

在CheckItemDao接口中扩展分页查询方法

@Mapper
public interface CheckItemDao {
    Page<CheckItem> selectByCondition(String queryString);
}

2.5 Mapper映射文件

在CheckItemDao.xml文件中增加SQL定义

    <select id="selectByCondition" parameterType="string"
            resultType="com.itheima.pojo.CheckItem">
        select * from t_checkitem
        <if test="value != null and value.length > 0">
            where code = #{value} or name = #{value}
        </if>
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值