mybatis

如何通过mybatis的select属性实现分页查询

小樊
81
2024-10-13 19:17:38
栏目: 编程语言

在 MyBatis 中,你可以使用 <foreach> 标签结合 SQL 语句中的 LIMITOFFSET 子句来实现分页查询。以下是一个简单的示例:

  1. 首先,在你的 MyBatis 配置文件(例如:mybatis-config.xml)中,添加一个名为 pageSize 的参数,用于设置每页显示的记录数:
<configuration>
    ...
    <settings>
        <setting name="pageSizeZero" value="true"/>
    </settings>
    ...
</configuration>
  1. 在你的 Mapper XML 文件中,编写一个分页查询的 SQL 语句。使用 <foreach> 标签遍历查询参数,并使用 LIMITOFFSET 子句实现分页:
<mapper namespace="com.example.dao.UserDao">
    <select id="selectPage" parameterType="map" resultType="com.example.model.User">
        SELECT * FROM user
        <where>
            <if test="id != null">
                AND id = #{id}
            </if>
            <if test="name != null and name != ''">
                AND name LIKE CONCAT('%', #{name}, '%')
            </if>
        </where>
        LIMIT #{pageSize} OFFSET #{offset}
    </select>
</mapper>

在这个示例中,#{pageSize}#{offset} 是传递给 SQL 语句的分页参数。#{offset} 的值可以通过计算 #{pageSize} * (pageNum - 1) 得到,其中 pageNum 是当前页码。

  1. 在你的 Mapper 接口中,添加一个分页查询的方法:
public interface UserDao {
    List<User> selectPage(Map<String, Object> params);
}
  1. 最后,在你的 Service 或 Controller 层,调用分页查询方法并传入相应的参数:
public class UserService {
    @Autowired
    private UserDao userDao;

    public List<User> getUsersByPage(int pageNum, int pageSize) {
        Map<String, Object> params = new HashMap<>();
        params.put("pageNum", pageNum);
        params.put("pageSize", pageSize);
        return userDao.selectPage(params);
    }
}

现在,你可以通过调用 getUsersByPage 方法并传入页码和每页显示的记录数来获取分页查询的结果。

0
看了该问题的人还看了