5分钟学会Springboot结合Mybatis Plus实现分页

1、导入Mybatis Plus场景

       
            com.baomidou
            mybatis-plus-boot-starter
            3.4.1
        

2、编写实体类User

@Data
@AllArgsConstructor
@NoArgsConstructor
public class  User {
    private Long id;
    private String name;
    private Integer age;
    private String address;
    private String username;
    private String password;
}

3、编写UserMapper

@Mapper
@Component
public interface UserMapper extends BaseMapper {

}

        继承BaseMapper类,T为泛型,需要操作的表的实体类

4、编写Service层

接口:

public interface UserService extends IService {
    
}


实现类:
@Service
public class UserServiceImpl extends ServiceImpl implements UserService {
}

        service接口继承IService 

        实现类继承ServiceImpl<参数1, 参数2>:参数1为对应的Mapper文件,参数2为操作的表实体类

        此时的UserService已经具有了很多操作数据的方法

5分钟学会Springboot结合Mybatis Plus实现分页_第1张图片

5、编写Controller

    @Autowired
    UserService userService;  
    @GetMapping("/dynamic_table")
    public String dynamic_table(@RequestParam(value = "pn",defaultValue = "1")Integer pn, Model model){
        //查询所有数据
        // List list = userService.list();
        //model.addAttribute("users",list);
        //分页查询数据
        Page userPage = new Page(pn, 3);//pn是当前页码,5为每页显示的数据条数
        Page page = userService.page(userPage, null);//分页查询的结果
        model.addAttribute("page",page);
        return "table/dynamic_table";
    }

        pn参数为当前页码,如果当前页码为空,就默认为1

6、配置分页插件

@Configuration
public class MyBatisConfig {

    @Bean
    public MybatisPlusInterceptor paginationInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor=new MybatisPlusInterceptor();

        //分页拦截器
        PaginationInnerInterceptor paginationInnerInterceptor=new PaginationInnerInterceptor();
        paginationInnerInterceptor.setOverflow(true);//到最后一页时,自动跳转到第一页  到第一页时,不会再向前
        paginationInnerInterceptor.setMaxLimit(5L);//每页最多为5条
        mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);

        return mybatisPlusInterceptor;
    }
}

7、前端界面

                             
# id name age address 操作
当前第 [[${page.current}]] 页 总计 [[${page.pages}]] 页 共 [[${page.total}]] 条记录

        查询的当前页的用户,在Page.records里面

8、效果展示

5分钟学会Springboot结合Mybatis Plus实现分页_第2张图片

9、自定义sql分页查询

分页接口:

@RestController
public class RkController {

    @Autowired
    private RkMapper rkMapper;


    /**
     * 测试分页查询
     * @return
     */
    @RequestMapping("/page")
    public R grid(){

        //从 第0条数据以后查询 5条 这两个参数由前端传递
        // 这里为了方便写死
        Page page=new Page(0,5);

        //查询条件,这里也写死
        String name="辣子鸡";
        //分页查询 传入page和name   返回一个新的page对象
        IPage newPage = rkMapper.findPagerk(page, name);

        System.out.println(newPage.getRecords().toString());
        System.out.println("=======================");
        System.err.println(page.getRecords().toString());
        //比较两个对象是否相等
        System.out.println("两个page对象是否相等:"+(newPage==page));

        return  R.success(page);
    }

}
 
  

Mapper:

/**
 * @author :Rk.
 * @date : 2022/10/10
 */
@Mapper
public interface RkMapper extends BaseMapper {

    /**
     * 分页查询 可以自定义查询条件,结果会封装到 IPage中
     * 返回值类型就写Dish  只需要在乎你查询的当前页的数据,其他的会自动补全
     * @param page
     * @param name  查询条件,菜品名称
     * @return
     */
    IPage findPagerk(@Param("page")IPage page, @Param("name")String name);

}

测试:

5分钟学会Springboot结合Mybatis Plus实现分页_第3张图片

执行了两个sql,并且两个page对象是相等的:

5分钟学会Springboot结合Mybatis Plus实现分页_第4张图片

 

你可能感兴趣的:(Springboot,spring,boot,java,eureka)