如何将多个选择查询包装到Mybatis中的一个查询中?

时间:2014-09-29 19:04:55

标签: mysql sql mybatis

如何在MyBatis中返回多个选择查询?例如,我想返回一个包含20个用户的列表,即用户总数,比如1000.在下面的示例中,我使用SQL_CALC_FOUND_ROWS获取LIMIT应用之前的总数,并使用FOUND_ROWS()来检索缓存中的值第二个选择查询。

<resultMap type="User" id="userResultMap">
    <id property="id" column="u_id" />
    <result property="username" column="u_username" />
        <result property="password" column="u_password" />
        <result property="email" column="u_email" />
</resultMap>

<select id="get" parameterType="Integer" resultType="list" resultMap="userResultMap">
        SELECT            
            SQL_CALC_FOUND_ROWS
            u.id                           AS u_id,
            u.username               AS u_username,
            u.password               AS u_password,
            u.email                     AS u_email
       FROM user u WHERE u.id=#{id}
       <if test="startIndex != null and perPage != null">
            LIMIT #{startIndex}, #{perPage}
       </if>

       SELECT FOUND_ROWS(), #{startIndex}, #{perPage};
</select>

我正在考虑添加另一个resultMap,并且没有找到在Java Spring端获取多个返回的方法。

在Java方面,它就像

List<User> get(@Param("id") Integer id, @Param("startIndex") Integer startIndex,
            @Param("perPage") Integer perPage);

1 个答案:

答案 0 :(得分:-2)

您使用了2个不同的<select>标记。 1表示计数,其他表示用户列表。要返回计数值,您可以使用以下内容:

<select id="getUsersCount" parameterType="map" resultType="hashmap" SELECT COUNT(*) USERS_COUNT FROM USER </select>

在Java代码中,您将获得USERS_COUNT值。