MyBatis分页查询:使用LIMIT和OFFSET实现动态条件查询

在MyBatis中,可以使用mapper.java和mapper.xml实现分页查询。本篇文章将介绍如何使用LIMIT和OFFSET语句以及动态条件查询来实现高效灵活的数据获取。

1. mapper.java代码示例

List<User> list = queryByPage(Page<User> page, @Param("vo") User user);

2. mapper.xml代码示例

<select id="queryByPage" parameterType="com.example.Page" resultMap="com.example.UserResultMap">
  SELECT * FROM user
  WHERE 1=1
  <if test="vo != null and vo.name != null">
    AND name = #{vo.name}
  </if>
  <if test="vo != null and vo.age != null">
    AND age = #{vo.age}
  </if>
  ORDER BY id DESC
  LIMIT #{pageSize} OFFSET #{offset}
</select>

3. 代码解析

  • Page类包含pageSize和offset属性,分别表示每页显示的数据条数和从第几条数据开始查询。
  • @Param("vo") User user 表示User对象作为参数,用于传递查询条件。
  • IF语句用于判断查询条件是否为空,如果不为空则将查询条件拼接到SQL语句中。
  • ORDER BY id DESC 用于按照id降序排列,保证查询结果的顺序一致。
  • LIMIT #{pageSize} OFFSET #{offset} 用于限制查询结果的范围。

总结

使用LIMIT和OFFSET语句以及动态条件查询可以实现灵活高效的MyBatis分页查询。通过Page类传递分页参数,并通过动态条件查询过滤数据,可以满足各种不同的分页需求。


原文地址: https://www.cveoy.top/t/topic/onpE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录