mybatis-plus 自定义 xml分页查询 IPage<T> page
时间: 2023-12-08 17:06:38 浏览: 207
在 Mybatis-Plus 中,我们可以通过自定义 XML 文件来实现复杂的 SQL 操作,包括分页查询。下面是一个示例,演示如何使用自定义 XML 文件实现 Mybatis-Plus 分页查询:
```xml
<!-- Mybatis 自定义 XML 文件 -->
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectUserList" resultType="com.example.entity.User">
select * from user
<where>
<if test="name != null and name != ''">
and name like concat('%', #{name}, '%')
</if>
</where>
</select>
<!-- 分页查询 -->
<select id="selectUserPage" resultMap="userResultMap">
select * from user
<where>
<if test="name != null and name != ''">
and name like concat('%', #{name}, '%')
</if>
</where>
<if test="page != null">
limit #{page.current}, #{page.size}
</if>
</select>
</mapper>
```
其中,`selectUserList` 是一个普通的查询语句,`selectUserPage` 则是一个带有分页参数的查询语句。在分页查询中,我们需要使用 `limit` 关键字来控制返回数据的数量,同时,我们也需要将分页信息传递给 SQL 语句。这里,我们通过 Mybatis 的参数处理机制来实现,在 XML 文件中使用 `${paramName}` 取出参数值。
接下来,我们需要在 Java 代码中调用该查询语句,从而实现分页查询。示例代码如下:
```java
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Override
public IPage<User> getUserPage(Page<User> page, String name) {
return baseMapper.selectUserPage(page, name);
}
}
```
在 Service 实现类中,我们通过 `baseMapper` 来调用自定义 SQL 语句,其中 `selectUserPage` 方法返回一个 `IPage<User>` 对象,表示查询结果。最后,我们将该对象返回给控制器,完成分页查询。
阅读全文