有关MyBatis 和 MyBatisPlus 分页分为以下两个博客讲解: 博客一 博客二
基础代码- 实体类User
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User {
/**
* 编号
*/
private Integer id;
/**
* 姓名
*/
private String name;
/**
* 昵称
*/
private String nickname;
}
- 查询类UserQuery
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserQuery {
/**
* 编号
*/
private Integer id;
/**
* 姓名
*/
private String name;
/**
* 昵称
*/
private String nickname;
/**
* 所有查询的字段
*/
private String columns;
/**
* 当前显示的页码
*/
private Integer pageNum =1;
/**
* 每页的大小
*/
private Integer pageSize = 10;
}
MyBatis分页
- Maven依赖
com.github.pagehelper
pagehelper-spring-boot-starter
1.3.1
- 分页接口
@Mapper
public interface UserMapper{
/**
* 根据条件分页查询用户
* @param userQuery
* @return
*/
List selectUserByPageWithCondition(UserQuery userQuery);
}
- 分页Mapper
DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
select
*
${columns}
from tb_user
and id = #{id}
and name like #{name}
and nickname like #{nickname}
- 测试代码
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.resume.domain.User;
import com.resume.domain.UserQuery;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.List;
@SpringBootTest
class UserMapperTest {
@Resource
private UserMapper userMapper;
@Test
void selectUserByPageWithCondition() {
//使用MyBatis的分页插件PageHelper
Page page = PageHelper.startPage(2, 10);
UserQuery userQuery = UserQuery.builder()
.columns("id,name")
.build();
List users = userMapper.selectUserByPageWithCondition(userQuery);
users.forEach(System.out::println);
System.out.println(page);
page.getResult().forEach(System.out::println);
}
}
注意:引入的Page所属于的包为com.github.pagehelper.Page
MyBatisPlus分页- 除了MyBatisPlus的依赖外,不需要再额外导入分页插件
- Servlet层代码
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.resume.bean.PageBean;
import com.resume.domain.User;
import com.resume.domain.UserQuery;
import com.resume.mapper.UserMapper;
import com.resume.service.UserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl implements UserService {
@Override
public PageBean pageUser(UserQuery userQuery) {
IPage page = new Page(userQuery.getPageNum(),userQuery.getPageSize());
QueryWrapper queryWrapper = new QueryWrapper();
if (userQuery.getId() != null) {
queryWrapper.eq("id", userQuery.getId());
}
if (userQuery.getName() != null) {
queryWrapper.like("name", userQuery.getName());
}
if (userQuery.getNickname() != null) {
queryWrapper.like("nickname", userQuery.getNickname());
}
baseMapper.selectPage(page, queryWrapper);
PageBean pageBean = PageBean.init(page);
return pageBean;
}
}
注意:引入的Page所属于的包为com.baomidou.mybatisplus.extension.plugins.pagination.Page