要将查询结果加入集合,并且不影响分页查询,可以使用MyBatis的嵌套查询功能。以下是一个示例代码:

  1. 首先,创建一个User类,包含一个List属性:
public class User {
    private int id;
    private String name;
    private List<Course> courses;

    // 省略getter和setter方法
}
  1. 创建一个Course类,表示课程:
public class Course {
    private int id;
    private String name;

    // 省略getter和setter方法
}
  1. 在UserMapper.xml文件中,编写查询用户及其课程的SQL语句:
<select id="getUserWithCourses" resultMap="userWithCoursesResultMap">
    SELECT u.id, u.name, c.id AS course_id, c.name AS course_name
    FROM user u
    LEFT JOIN user_course uc ON u.id = uc.user_id
    LEFT JOIN course c ON uc.course_id = c.id
    WHERE u.id = #{id}
</select>

<resultMap id="userWithCoursesResultMap" type="User">
    <id property="id" column="id"/>
    <result property="name" column="name"/>
    <collection property="courses" ofType="Course">
        <id property="id" column="course_id"/>
        <result property="name" column="course_name"/>
    </collection>
</resultMap>
  1. 在UserMapper接口中定义一个getUserWithCourses方法:
public interface UserMapper {
    User getUserWithCourses(int id);
}
  1. 在UserMapper.xml文件中,编写分页查询用户的SQL语句:
<select id="getUserList" resultMap="userResultMap">
    SELECT id, name
    FROM user
    LIMIT #{offset}, #{limit}
</select>

<select id="getUserCount" resultType="int">
    SELECT COUNT(*) FROM user
</select>

<resultMap id="userResultMap" type="User">
    <id property="id" column="id"/>
    <result property="name" column="name"/>
</resultMap>
  1. 在UserMapper接口中定义一个getUserList方法:
public interface UserMapper {
    List<User> getUserList(@Param("offset") int offset, @Param("limit") int limit);
    int getUserCount();
}

这样,你就可以分别调用getUserWithCoursesgetUserList方法来查询用户及其课程,以及进行分页查询,两者之间互不影响。

MyBatis User对象表内有课程表的集合 如何将查询结果加入集合 不影响分页查询应该怎么写

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

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