我正在尝试将myBatis数据库结构嵌入到现有项目中。我已经将它作为一个例子实现了。当我尝试在我的项目中使用相同的方法时,我得到了这个NoSuchMethodException。 (顺便说一句,这个SQL查询工作,我已经在数据库上尝试了相同的值) 我的班级文件
public class Cashflow {
public long id;
public LocalDate finalMaturityDate;
public int branchCode;
public int currencyCode;
public long rateProfileCodeId;
public Cashflow(long id, LocalDate finalMaturityDate) {
this.id = id;
this.finalMaturityDate = finalMaturityDate;
}
public Cashflow(long id, int branchCode, int currencyCode, long rateProfileCodeId){
this.id = id;
this.branchCode = branchCode;
this.currencyCode = currencyCode;
this.rateProfileCodeId = rateProfileCodeId;
this.finalMaturityDate = LocalDate.parse("2012-05-12");
}
public void setRateProfileCodeId(long rateProfileCodeId) {
this.rateProfileCodeId = rateProfileCodeId;
}
}
My mapper file:
<resultMap type="Cashflow" id="CashflowResult">
<result property="id" column="NAK_ID" />
<result property="branchCode" column="NAK_GIR_SUBE_KODU" />
<result property="currencyCode" column="NAK_DOVIZ_KODU" />
<result property="rateProfileCodeId" column="NAK_OPK_ID" />
</resultMap>
<select id="retrieveCashflowMyBatis" parameterType="long" resultMap="CashflowResult" >
SELECT
NAK_ID,
NAK_DOVIZ_KODU,
NAK_OPK_ID,
NAK_URN_ID,
NAK_GIRIS_TIP,
NAK_AKIS_TUTAR,
NAK_GIR_SUBE_KODU,
NAK_REFERANS_NO,
NAK_GECERLILIK_TARIH,
NAK_DURUM_KODU,
NAK_DETAY_GUNCELLEME,
MUI_MUSTERI_NO,
NAH_ODEME_BAS_TARIH,
NAH_ORTALAMA_VADE_TARIH,
NAH_ORTALAMA_VADE,
NAH_HESAPLAMA_TARIH,
NAH_DURASYON,
NAH_IRR,
NAH_FAIZ_HESAP_TIPI,
NAH_DURASYON_BAZ_TARIH,
NAH_KALAN_ORTALAMA_VADE,
NAH_FAIZ_TIPI,
OPK_LIBOR_BASAMAK_SAYISI,
OPK_ORAN_GUN_KODU,
OPK_GERI_ODEME_VALOR
FROM SCNAU.NAU_NAKIT_AKIS
LEFT OUTER JOIN
SCNAU.NAU_NAKIT_AKIS_HESAP
ON NAK_ID = 35
AND NAH_NAK_ID = NAK_ID,
SCNAU.NAU_MUSTERI_ILISKI,
SCNAU.NAU_ORAN_PROFIL_KOD
WHERE NAK_ID = 35
AND MUI_NAK_REFERANS_NO = NAK_REFERANS_NO
AND MUI_DURUM_KODU = '1'
AND NAK_OPK_ID = OPK_ID
WITH UR
</select>
My interface class for method:
public interface DatabaseService {
public Cashflow retrieveCashflowMyBatis(long cashflowId);
}
答案 0 :(得分:2)
您的resultMap正在尝试调用默认构造函数Cashflow()
(因为您没有告诉它做其他事情),这是不存在的。要么添加一个......
public Cashflow() {}
...或将正确的构造函数参数放入resultMap:
<resultMap type="Cashflow" id="CashflowResult">
<constructor>
<idArg column="NAK_ID" javaType="int"/>
<arg column=".." javaType=/>
<!-- do for all constructor arguments branchCode, currencyCode, rateProfileCodeId -->
</constructor>
... result tags as needed
</resultMap>