検索

ホームページ  >  に質問  >  本文

java - Mybatisデータベースのマルチテーブル関連のページング問題

例:
User と Address という 2 つのエンティティ クラスがあります

リーリー

データベース:

リーリー

mybatis マッピング構成:

リーリー

ユーザーとアドレスの関係は次のとおりです。1 人のユーザーは複数のアドレスを持ち、1 つのアドレスは 1 人のユーザーにのみ属することができ、1 対多です。
現在の需要は、ページ内のユーザーをクエリし、ページ内にユーザーを表示することであると仮定します。テーブルを作成し、各ユーザーを配置します。 すべてのアドレスが表示されます。
その後、問題が発生します。
上記のクエリに従って返されたページング データには問題はありませんが、ページング レコードの総数が間違っています。
たとえば、見つかったデータ (ページ表示ではなくデータベース データ) は次のとおりです:

###援助### ###詳細### ユーザー1ユーザー1ユーザー2
u_id ユーザー名 1
1 北京市海頂区 1
2 北京市朝陽区 2
3 天津市 私の要件はページにユーザーを表示することなので、ユーザーはページに表示される次のようなデータです。理論的には、これは 2 つのデータです。
###ユーザーID###

ユーザー名

###住所### count(*) をクエリするとき、左結合に関連付けられたすべてのテーブルを削除する必要がありますか?これにより、返されるデータが不正確になりますか追加説明: 私が言いたかったことを皆さんが誤解されているようです。実際、私の問題は主に SQL にあり、mybatis ではありません。なぜなら、クエリしたデータがマップされた後はまったく問題がなかったからです。ページング レコードの総数に問題があるため、誤ったページングが発生します。
1 ユーザー1 1. 北京市海淀区 2. 北京市朝陽区
2 ユーザー2 1. 天津市
合計1ページ、合計2つのデータ、各ページに10個表示されます しかし、mybatis の find_count 設定によると、項目が 3 つあることがわかります。
黄舟黄舟2758日前1540

全員に返信(6)返信します

  • 漂亮男人

    漂亮男人2017-06-10 09:51:39

    例を書いてテストしてみました

    `

    2 つのエンティティ クラス
    パブリック クラス ユーザー {

    リーリー

    パブリッククラスアドレス{

    リーリー

    マッピング ファイル
    <resultMap type="com.atguigu.mybatis.entity.User" id="userMap" autoMapping="true">

    リーリー

    <!-- tu.,ta.、 -->
    <!-- ta.id を 'a_id' として選択、 -->