Ich versuche, auf eine Tabelle in meiner sekundären DB zuzugreifen, deren Name ich von meiner primären Datenbank erhalte. Meine Schwierigkeit besteht darin, den "DB-Name" als Parameter in meine sekundäre Abfrage einzugeben (Übrigens verwende ich MyBatis Annotation-basierte Mapper).mybatis - Mehrere Parameter an @One-Annotation übergeben
Das ist mein Mapper
@SelectProvider(type = DealerQueryBuilder.class, method = "retrieveDealerListQuery")
@Results({
@Result(property="dealerID", column="frm_dealer_master_id"),
@Result(property="dealerTypeID", column="frm_dealer_type_id", [email protected](select="retrieveDealerTypeDAO")),
@Result(property="dealerName", column="frm_dealer_name")
})
public List<Dealer> retrieveDealerListDAO(@Param("firmDBName") String firmDBName);
@Select("SELECT * from ${firmDBName}.frm_dealer_type where frm_dealer_type_id=#{frm_dealer_type_id}")
@Results({
@Result(property="dealerTypeID", column="frm_dealer_type_id"),
@Result(property="dealerType", column="frm_dealer_type")
})
public DealerType retrieveDealerTypeDAO(@Param("firmDBName") String firmDBName, @Param("frm_dealer_type_id") int frm_dealer_type_id);
Die firmDBName Ich habe von meiner "Primary DB" erhalten wird.
- Wenn ich $ {firmDBName} in meiner zweiten Abfrage nicht angeben, wird die Abfrage versucht, meine primäre Datenbank zuzugreifen und wirft Tabelle „PrimaryDB.frm_dealer_type“ nicht gefunden. Daher versuche ich im Grunde in meiner primären Datenbank nach einer Tabelle namens "frm_dealer_type" zu suchen.
Wenn ich versuche, die @Result wie
@Result (property = "dealerTypeID", Spalte = "firmDBName = firmDBName, frm_dealer_type_id = frm_dealer_type_id" neu zu schreiben, ein = @ One (select = "retrieveDealerTypeDAO"),
Es wird ein Fehler ausgegeben, dass die Spalte "firmDBName" nicht existiert.
- $ {firmDBName} zu # {firmDBName} zu ändern, hat auch nicht geholfen.
ich in diesem Blog bezog sich - here
Ich möchte eine Lösung für mein Parameter firmDBName aus meiner primären Abfrage in sekundäre Abfrage übergeben.
Wenn der Spalt Name, der in angegeben {parameter_name = Column_Name} existiert nicht in der DB-Tabelle, wie kann ich weitergeben der Wert für den Parameter_Name in der Form einer Variablen, so {parameter_Name = _my_variable_}? – Razvi
Es muss nicht in Ihrer dB-Tabelle sein, es muss nur von der Auswahl zurückgegeben werden, die von Ihrem sqlprovider generiert wurde. Wenn Sie den Java-Code dafür bereitstellen können, kann ich Ihnen zeigen, wie Sie ihn beheben können. Wenn Sie den Testfall, den ich in meiner Antwort verlinkt habe, nicht sehen können, sehen Sie, wie er bei der ersten Auswahl zurückgegeben wird. – h3adache
Wählen Sie den DB-Namen als Rückgabewert und den benutzerdefinierten Spaltennamen aus, um den Namen der Rückkehrspalte zuzuordnen. Habe das Problem gelöst. Vielen Dank – Razvi