MyBatis-Plus结合Layui实现分页方法

MyBatis-Plus 使用简单,内置通用 Mapper、通用 Service,仅仅通过少量配置,即可实现单表大部分 CRUD 操作。下面介绍使用 service 中的 page 方法结合 Layui 前端框架,较快速的实现分页效果。

在 pom.xml 中引入依赖



 com.baomidou
 mybatis-plus-boot-starter
 ${mybatisplus.version}

使用 MyBatis-Plus 内置的 mapper。首先编写好实体类,然后编写 mapper 接口,并继承 BaseMapper。BaseMapper 中包含大部分的 CRUD 方法,不需要编写 mapper.xml 。如果需要多表查询的话,可根据自己的业务需要编写 mapper.xml 。

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.systop.pojo.School;
import org.springframework.stereotype.Repository;

/**
 * @author: Miranda
 * @Date: 2021/8/2
 * @description:
 */
@Repository
public interface SchoolMapper extends BaseMapper {

}

使用 MyBatis-Plus 内置的 service。编写 service 接口,并继承 IService。

import com.baomidou.mybatisplus.extension.service.IService;
import com.systop.pojo.School;

/**
 * @author: Miranda
 * @Date: 2021/8/2
 * @description:
 */
public interface SchoolService extends IService {

}

编写 service 实现类,继承 MyBatis-Plus 的 ServiceImpl ,同时实现 SchoolService 接口。

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.systop.mapper.SchoolMapper;
import com.systop.pojo.School;
import com.systop.service.SchoolService;
import org.springframework.stereotype.Service;

/**
 * @author: Miranda
 * @Date: 2021/8/2
 * @description:
 */
@Service
public class SchoolServiceImpl extends ServiceImpl implements SchoolService {

}

使用 MyBatis-plus 分页,必须写一个配置类

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author: Miranda
 * @Date: 2021/8/3
 * @description:
 */
@Configuration
@MapperScan("com.systop.mapper")
public class MybatisPlusConfig {
    /**
     * 分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

需要一个 Layui 返回值的类

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;

/**
 * @author: Miranda
 * @Date: 2021/8/2
 * @description:
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LayuiPage {

    private int code;
    private String msg;
    private Long count;
    private List data;

    /**
     * 只有总条数和分页数据的构造方法
     * @param count 总条数
     * @param data 分页数据
     */
    public LayuiPage( Long count, List data) {
        this.count = count;
        this.data = data;
    }
}

controller 类

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.systop.pojo.School;
import com.systop.service.SchoolService;
import com.systop.utils.LayuiPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author: Miranda
 * @Date: 2021/8/2
 * @description:
 */
@Controller
public class SchoolController {

    @Autowired
    private SchoolService schoolService;
   
    @RequestMapping("schoolList")
    @ResponseBody
    public LayuiPage schoolList(int page,int limit){
        //传入分页的属性
        Page pager = new Page<>(page,limit);
        //分页查询学校信息
        IPage schoolPage = schoolService.page(pager, new QueryWrapper<>());
        // schoolPage.getTotal() 信息总条数
        // schoolPage.getRecords() 分页数据
        return new LayuiPage(schoolPage.getTotal(),schoolPage.getRecords());
    }
}

Layui 页面代码实现




 
 学校信息管理
 
 
 
 
 
 


 

页面效果如下:

MyBatis-Plus结合Layui实现分页方法_第1张图片

排雷:
刚开始定义 Layui 返回数据类的时候,将 code 定义成 Integer 类型,并且在 controller 类中使用的是两个参数的构造方法,导致传给前台数据中 code 的值是 null,所以数据渲染一直报 “返回的数据状态异常”。

解决:
将 code 定义成 int 类型,或者在 controller 中使用时,传四个参数。

到此这篇关于MyBatis-Plus结合Layui实现分页方法的文章就介绍到这了,更多相关MyBatis-Plus Layui分页内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(MyBatis-Plus结合Layui实现分页方法)