MyBatis-Plus 实现分页
一、实现方式
1、添加依赖
2、需要注册并配置一个分页拦截器
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 MyBatisPlusConfig {
/**
* MyBatisPlus拦截器(用于分页)
*/
@Bean
public MybatisPlusInterceptor paginationInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//添加MySQL的分页拦截器
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
二、使用
tip
IPage内的方法:
getPages() = 总页数
getTotal() = 总数据条数
getRecords() = 查询到的数据集合
1、方法1:使用代码方式
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public IPage<User> getUserPage(int pageNum, int pageSize) {
// 创建分页对象
Page<User> page = new Page<>(pageNum, pageSize);
// 调用分页查询方法,传入分页对象和查询条件
return userMapper.selectPage(page, null);
}
}
2、方法2:使用XML
在 XML 映射文件中,使用 <select>
标签来定义分页查询的 SQL 语句,并使用 limit
关键字来限制返回结果的数量,同时使用 offset
关键字来指定起始位置。
xmlCopy code<select id="getUserPage" resultType="User">
select * from user
<where>
<!-- 这里可以添加条件 -->
</where>
limit #{offset}, #{pageSize}
</select>
在 DAO 接口中定义方法,将 offset
和 pageSize
作为参数传入,并使用 @Param
注解将它们与 XML 映射文件中的参数对应起来。
javaCopy codeimport org.apache.ibatis.annotations.Param;
import java.util.List;
public interface UserMapper {
List<User> getUserPage(@Param("offset") int offset, @Param("pageSize") int pageSize);
}
这样就实现了 MyBatis-Plus 的分页功能。
3、方法3:二者结合:再Mapper的方法被传入IPage参数,返回值设置为IPage
IPage<VlogVO> getVideoList(IPage<VlogVO> page, @Param("paramMap") Map<String, Object> paramMap);