mybatis分页查询count
时间: 2023-10-19 08:25:49 浏览: 52
在 MyBatis 中进行分页查询,需要先查询总记录数(count),然后再进行分页查询。以下是一个示例:
首先,创建一个方法来查询总记录数:
```java
public int getCount() {
try (SqlSession session = sqlSessionFactory.openSession()) {
return session.selectOne("namespace.getCount");
}
}
```
其中,`namespace.getCount` 是你自己定义的命名空间和 SQL 语句。
接下来,创建一个方法来进行分页查询:
```java
public List<User> getUsersByPage(int offset, int limit) {
try (SqlSession session = sqlSessionFactory.openSession()) {
Map<String, Object> params = new HashMap<>();
相关问题
mybatis分页查询
Mybatis支持通过分页插件进行分页查询,具体步骤如下:
1. 引入分页插件依赖,在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
```
2. 在application.yml或者application.properties文件中配置分页插件的参数:
```
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql
```
3. 在Mapper接口中定义分页查询方法,例如:
```
public interface UserMapper {
List<User> selectAllUsers();
}
```
4. 在Mapper.xml文件中编写分页查询SQL语句,例如:
```
<select id="selectAllUsers" resultType="User">
select * from user
</select>
```
5. 在Service层中调用Mapper接口中的分页查询方法,例如:
```
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public PageInfo<User> getAllUsers(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<User> userList = userMapper.selectAllUsers();
return new PageInfo<>(userList);
}
}
```
其中,PageHelper.startPage(pageNum, pageSize)用于设置分页的参数,pageNum表示当前页数,pageSize表示每页显示的记录数;new PageInfo<>(userList)用于将查询结果封装成PageInfo对象,方便进行分页展示。
以上就是使用Mybatis进行分页查询的步骤,希望对你有所帮助。
mybatis分页查询 原理
MyBatis的分页查询原理是通过使用ThreadLocal来实现的。在执行分页查询之前,首先需要调用startPage方法来创建一个包含分页参数的page对象,并将其放入ThreadLocal中。这个page对象包含了页码、每页显示数量、是否进行count查询等参数。接着,在查询之前会调用afterCount方法来判断是否有必要进行查询,它会根据总记录数和分页条件来判断是否需要进行查询。如果总记录数大于分页条件所限制的范围,则需要进行查询,否则不需要查询。最后,根据需要执行分页查询的逻辑来获取符合分页条件的结果集。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [MyBatis的分页原理](https://blog.csdn.net/web15085599741/article/details/123350219)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]