mybatis plus xml 一对多 分页查询
时间: 2024-08-13 07:02:48 浏览: 103
MyBatis Plus 的 XML 配置文件可以用于实现一对一或多对一关联关系下的分页查询,对于一对多(ManyToOne 或者 OneToMany),你可以通过以下步骤完成:
1. **映射关系**:首先,在实体类(Entity)中,你需要在目标实体类上设置 `@TableId` 和 `@TableField` 注解,而在关联的实体类上,通常会有一个 `@OneToOne` 或 `@OneToMany` 关联字段。
```java
// 主体类(User)
@Table(name = "user")
public class User {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
// 其他字段...
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "department_id")
private Department department; // 这里假设有一个部门关联
}
// 关联类(Department)
@Table(name = "department")
public class Department {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
// 其他字段...
}
```
2. **分页查询**:在 SQL 映射 XML 文件中,你可以编写一个动态 SQL 查询语句,包括 LIMIT 和 OFFSET 用于分页。例如:
```xml
<select id="selectDepartmentsByUser" resultType="Department">
SELECT * FROM department
WHERE user_id = #{userId}
ORDER BY id ASC
<if test="offset != null and limit != null">
LIMIT #{offset}, #{limit}
</if>
</select>
```
这里,`${offset}` 和 `${limit}` 是 MyBatis 的参数占位符,可以在调用方法时传入当前页数和每页大小。
3. **调用方法**:在 Service 层或 Controller 中,你可以使用 `BaseMapper` 或自定义的 Mapper 接口提供的分页查询方法,并传入用户 ID 和页码信息:
```java
List<Department> departments = departmentMapper.selectDepartmentsByUser(userId, page, size);
```
阅读全文
相关推荐


















