メッセージ リマインダーが続きます。このメッセージは、他の誰かがあなたの記事に直接返信した可能性があります。現時点では、データベース操作を実行して記事テーブルを関連付け、対応する記事のコンテンツを取得する必要があります [メッセージ リマインダー:あなたの記事への新しい返信 xxx]、または他の誰かがあなたのコメントに返信した可能性があります。このとき、コメント テーブルはコメントの内容を取得するために関連付けられています [メッセージ リマインダー: あなたのコメント xxx への新しい返信があります] . メッセージをクリックすると、このように詳細が表示されます。
データベースのテーブル構造は次のとおりです
mbelongbid はメッセージが属する記事の ID、mbelongcid はメッセージが属するコメントの ID です。
mbelongcid が空の場合、メッセージが記事への直接の返信であることを意味し、この時点で記事テーブルが関連付けられます;
mbelongcid が空でない場合、メッセージ返信オブジェクトが特定のメッセージであることを意味しますこのとき、コメントテーブルが関連付けられます。
この要件を満たす SQL ステートメントを作成するにはどうすればよいですか?
私の現在の考えは次のとおりです:
)r,
<if test="mbelongcid == null">
リーリー
</if>
リーリー
</if>
このように直接記述すると問題があります。一般的な考え方は、mbelongcid が null かどうかに基づいて異なるフィールドを取得するには、異なるテーブルを関連付けることです。何か良い解決策や提案はありますか?
mbelongcid不是你传入的参数的一部分,所以mybatis并不知道它到底是不是null!,你要实现你想要的这种逻辑应该从数据库端去着手,比如创建一个视图,这个视图由两个查询union而成。
当你写程序遇到这种需要很奇怪的语法的时候,请先回顾一下设计方案,通常缘由都是设计就有问题。
数据表谁设计的?扣工资 至少要加个下划线啊m_belong_cid,学生党,慢慢来吧。
我们项目用的是注解式SQL,遇到这类情况都是直接在Provider拼SQL解决。
MessageMapper.xml这部分的语句如下:
message类如下: