mybatis 分页查询 怎么只查询了数量;没有查询出数据
时间: 2024-10-28 08:10:33 浏览: 45
在MyBatis中进行分页查询时,如果只返回了总数而没有实际的数据结果,通常是因为你在SQL语句中只对`COUNT`进行了统计,并没有涉及到数据的fetch。这可能是由于你在Mapper XML文件中的`select`标签中指定了只计算总记录数,例如:
```xml
<select id="selectTotal" resultType="int">
SELECT COUNT(*) FROM your_table;
</select>
```
然后在你的Service层或者Repository中调用这个方法获取总数,但没有关联到真正的数据查询语句。如果你想要获取分页数据,应该在同一个`select`标签中同时加入计数和数据的查询部分,如下所示:
```xml
<select id="selectPage" parameterType="map" resultMap="yourResultMap">
SELECT COUNT(*), * FROM your_table
<if test="offset != null and limit != null">
LIMIT #{offset}, #{limit}
</if>
</select>
```
这里假设`yourResultMap`是你自定义的结果映射。
相关问题
MYBATIS分页查询
MyBatis分页查询是指在使用MyBatis框架进行数据库查询时,将查询结果按照指定的页数进行分割,每页显示指定数量的数据。MyBatis提供了多种分页查询的方式,包括基于注解的简单分页查询和在配置文件中做分页配置等。其中,基于注解的简单分页查询是通过在查询方法上添加注解来实现分页查询,而在配置文件中做分页配置则是通过配置分页插件来实现分页查询。在进行分页查询时,需要指定当前页数和每页显示的数据数量,MyBatis会根据这些参数自动进行分页查询并返回结果。
mybatis分页查询语句
MyBatis提供了一种方便的分页查询语句的方式,可以使用`<select>`元素来定义查询语句,并通过使用`RowBounds`或`PageHelper`两种方式实现分页。
1. 使用RowBounds:
```xml
<select id="selectUsers" resultType="User">
SELECT *
FROM users
ORDER BY id
LIMIT #{offset}, #{limit}
</select>
```
在Java代码中,可以使用RowBounds参数指定偏移量和限制数量:
```java
List<User> selectUsers(SqlSession session, int offset, int limit) {
return session.selectList("selectUsers", null, new RowBounds(offset, limit));
}
```
2. 使用PageHelper插件:
PageHelper是一个MyBatis分页插件,可以在项目中引入它来实现分页查询。首先在pom.xml文件中添加以下依赖项:
```xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>插件版本号</version>
</dependency>
```
在MyBatis配置文件中添加PageHelper插件的配置:
```xml
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="dialect" value="数据库方言"/>
</plugin>
</plugins>
```
在Java代码中,使用PageHelper.startPage方法开启分页,然后执行查询:
```java
// 开启分页,指定页码和每页数据量
PageHelper.startPage(pageNum, pageSize);
// 执行查询
List<User> userList = userDao.selectUsers();
```
以上是两种常用的MyBatis分页查询语句的方式。根据具体的需求,可以选择适合自己项目的方式来实现分页查询。
阅读全文