下面就为大家详细讲解“SpringBoot集成MyBatis的分页插件PageHelper实例代码”的完整攻略。
简介
在使用 MyBatis 进行数据库操作时,MySQL主要的限制在于分页查询。但是 Mybatis 配合 PageHelper 便可以轻松解决这个问题。本文将介绍如何在 SpringBoot 中使用 MyBatis 分页插件 PageHelper。
步骤
1. 添加依赖
在 pom.xml
文件中添加 PageHelper 和 MyBatis 的依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.13</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
2. 配置 PageHelper
在 application.yml
文件中添加以下配置:
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
3. 使用 PageHelper
在 DAO 层的查询方法上添加如下的分页查询配置:
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
public interface UserMapper {
@Select("SELECT * FROM user")
List<User> findAll();
@Select("SELECT * FROM user WHERE id=#{id}")
User findById(@Param("id") Long id);
@Insert("INSERT INTO user(name, age, email) VALUES(#{name}, #{age}, #{email})")
int insert(User user);
@Update("UPDATE user SET name=#{name}, age=#{age}, email=#{email} WHERE id=#{id}")
int update(User user);
@Delete("DELETE FROM user WHERE id=#{id}")
int delete(@Param("id") Long id);
// 使用 PageHelper 动态分页查询
@Select("SELECT * FROM user ORDER BY id")
List<User> findAllByPage();
}
在 service 层中调用 PageHelper 对应的方法实现用户列表的分页查询:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public PageInfo<User> findAllByPage(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<User> userList = userMapper.findAllByPage();
PageInfo<User> pageInfo = new PageInfo<>(userList);
return pageInfo;
}
}
4. 测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void testFindAllByPage() {
PageInfo<User> pageInfo = userService.findAllByPage(1, 2);
System.out.println("总记录数:" + pageInfo.getTotal());
System.out.println("总页数:" + pageInfo.getPages());
System.out.println("当前页码:" + pageInfo.getPageNum());
System.out.println("每页记录数:" + pageInfo.getPageSize());
System.out.println("结果集:" + pageInfo.getList());
}
}
测试结果:
总记录数:4
总页数:2
当前页码:1
每页记录数:2
结果集:[User(id=1, name=Tom, age=20, email=tom@163.com), User(id=2, name=Jack, age=22, email=jack@163.com)]
另外,还可以使用注解的方式实现分页:
@Select("SELECT * FROM user")
@Options(useGeneratedKeys = true, keyProperty = "id")
List<User> getAllUserByPage(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize);
注解方式和上面介绍的方法是等价的。
总结
本文介绍了在 SpringBoot 中如何集成 MyBatis 分页插件 PageHelper,以及两种不同的使用方式。PageHelper 在实际项目中使用非常方便,可以节省大量的代码量和时间。希望本文能对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot集成MyBatis的分页插件PageHelper实例代码 - Python技术站