mysql - mybatis select ステートメントの問題
过去多啦不再A梦
过去多啦不再A梦 2017-06-20 10:05:48
0
3
1060

メッセージ リマインダーが続きます。このメッセージは、他の誰かがあなたの記事に直接返信した可能性があります。現時点では、データベース操作を実行して記事テーブルを関連付け、対応する記事のコンテンツを取得する必要があります [メッセージ リマインダー:あなたの記事への新しい返信 xxx]、または他の誰かがあなたのコメントに返信した可能性があります。このとき、コメント テーブルはコメントの内容を取得するために関連付けられています [メッセージ リマインダー: あなたのコメント xxx への新しい返信があります] . メッセージをクリックすると、このように詳細が表示されます。

データベースのテーブル構造は次のとおりです

mbelongbid はメッセージが属する記事の ID、mbelongcid はメッセージが属するコメントの ID です。
mbelongcid が空の場合、メッセージが記事への直接の返信であることを意味し、この時点で記事テーブルが関連付けられます;
mbelongcid が空でない場合、メッセージ返信オブジェクトが特定のメッセージであることを意味しますこのとき、コメントテーブルが関連付けられます。

この要件を満たす SQL ステートメントを作成するにはどうすればよいですか?
私の現在の考えは次のとおりです:

###選択する### リーリー ###から### (### リーリー

)r,

<if test="mbelongcid == null">

リーリー
</if>

<if test="mbelongcid != null">

リーリー
</if>

このように直接記述すると問題があります。一般的な考え方は、mbelongcid が null かどうかに基づいて異なるフィールドを取得するには、異なるテーブルを関連付けることです。何か良い解決策や提案はありますか?

过去多啦不再A梦
过去多啦不再A梦

全員に返信(3)
给我你的怀抱
  1. mbelongcid は渡されたパラメータの一部ではないため、mybatis はそれが null かどうか知りません。 , 必要なロジックを実現したい場合は、2 つのクエリの和集合で構成されるビューの作成など、データベース側から開始する必要があります。

リーリー
  1. プログラムを作成するときにこの種の奇妙な構文に遭遇した場合は、通常、設計に問題があることが最初に設計計画を見直してください。

  2. データシートを設計したのは誰ですか? m_belong_cid の学生党員の皆さん、賃金を控除するときは少なくともアンダースコアを追加してください。

いいねを押す +0
过去多啦不再A梦

私たちのプロジェクトではアノテーション付き SQL を使用しています。このような状況が発生した場合は、プロバイダーで SQL を直接使用して解決します。

いいねを押す +0
扔个三星炸死你

MessageMapper.xml のこの部分のステートメントは次のとおりです:

メッセージクラスは次のとおりです:

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート