Nachrichtenerinnerung fortgesetzt, diese Nachricht könnte bedeuten, dass jemand anderes direkt auf Ihren Artikel geantwortet hat. Zu diesem Zeitpunkt müssen Sie Datenbankoperationen durchführen, um die Artikeltabelle zuzuordnen, um den Inhalt des entsprechenden Artikels zu erhalten. [Nachrichtenerinnerung: Es gibt eine neue Antwort zu Ihrem Artikel xxx], oder es kann sich um eine andere Person handeln. Nachdem Sie auf Ihren Kommentar geantwortet haben, wird das Kommentarformular verknüpft, um den Inhalt des Kommentars zu erhalten [Nachrichtenerinnerung: Es gibt eine neue Antwort auf Ihren Kommentar xxx]. Nachricht, die Details werden wie folgt angezeigt.
Die Datenbanktabellenstruktur ist wie folgt
mbelongbid ist die ID des Artikels, zu dem die Nachricht gehört, und mbelongcid ist die ID des Kommentars, zu dem die Nachricht gehört.
Wenn mbelongcid leer ist, bedeutet dies, dass die Nachricht eine direkte Antwort auf den Artikel ist und die Artikeltabelle zu diesem Zeitpunkt verknüpft ist.
Wenn mbelongcid nicht leer ist, bedeutet dies, dass das Nachrichtenantwortobjekt ein bestimmter Kommentar ist Die Kommentartabelle ist zu diesem Zeitpunkt verknüpft.
Wie schreibe ich SQL-Anweisungen, um diese Anforderung zu erfüllen?
Meine aktuellen Gedanken sind:
auswählen
r.*,
<if test="mbelongcid == null">`blog`.btitle</if>
<if test="mbelongcid != null">`comment`.ccontent</if>
von
(
select
mid, mreferuid, mbelongbid, mbelongcid
from
message
where mid = #{_parameter}
)r,
<if test="mbelongcid == null">
`blog` where r.mbelongbid = `blog`.bid
</if>
<if test="mbelongcid != null">
`comment` where r.mbelongcid = `comment`.cid
</if>
Es gibt ein Problem damit, es direkt so zu schreiben. Die allgemeine Idee besteht darin, verschiedene Tabellen zuzuordnen, um unterschiedliche Felder zu erhalten, je nachdem, ob mbelongcid null ist.
mbelongcid不是你传入的参数的一部分,所以mybatis并不知道它到底是不是null!,你要实现你想要的这种逻辑应该从数据库端去着手,比如创建一个视图,这个视图由两个查询union而成。
当你写程序遇到这种需要很奇怪的语法的时候,请先回顾一下设计方案,通常缘由都是设计就有问题。
数据表谁设计的?扣工资 至少要加个下划线啊m_belong_cid,学生党,慢慢来吧。
我们项目用的是注解式SQL,遇到这类情况都是直接在Provider拼SQL解决。
MessageMapper.xml这部分的语句如下:
message类如下: