MybatisPlus内置了分页的处理(和PageHelper类似,但是不一样)
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
下面举两个简单用例:
使用内置的分页方法查询:
/**
* 分页测试01:
* 使用MybatisPlus内置的分页方法
* 1、userDao.selectPage
* 2、参数两项(Page对象:设置分页参数,查询条件QueryWarrper)
* 3、返回值:Ipage(分页的PageBean对象:当前页的数据列表,总数,总页数...)
*/
@Test
public void testPage1() {
//Page对象:设置分页参数
Page<User> pageParams = new Page<>(1,5); //1-页码,2-每页查询条数
//查询条件QueryWarrper
QueryWrapper<User> wrapper = new QueryWrapper<>();
//分页查询
IPage<User> page = userDao.selectPage(pageParams, wrapper);//Page对象,查询条件QueryWarrper
System.out.println(page.getRecords()); //数据列表
System.out.println(page.getPages()); //总页数
System.out.println(page.getTotal()); //总条数
}
也可以自定义分页查询:
/**
* springboot整合mybatis-plus
* 1、继承BaseMapper
* 2、提供泛型:操作的实体类类型
* 具备了基础CRUD的功能
*/
public interface UserDao extends BaseMapper<User> {
//查询用户年龄大于age
@Select("select * from tb_user where age>#{age}")
IPage<User> findByAge(Page<User> page, Integer age);
}
/**
* 分页测试02:
* 使用自定的分页查询方式:
* 1、定义复杂查询方法:findByAge
* 2、添加分页的支持
* 改造参数:参数的第一个使用Page对象,参数的而他项依次写入
* 改造返回值:IPage
*/
@Test
public void testPage2() {
//Page对象:设置分页参数
Page<User> pageParams = new Page<>(1,5);
//调用dao查询
IPage page = userDao.findByAge(pageParams, 10);
System.out.println(page.getRecords()); //数据列表
System.out.println(page.getPages()); //总页数
System.out.println(page.getTotal()); //总条数
}