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

avatar
作者
猴君
阅读量:0

在 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 方法并传入页码和每页显示的记录数来获取分页查询的结果。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!