當前的項目,我使用過Spring數據JPA和春天開機,我發現這是非常convinence直到滿足這一要求最多的時間,我發現很難對付。 這是我採購實體和供應方實體和中間實體(BuyerSupplier),如果我想通過電話或名稱或兩個或所有搜索買家,我需要提供很多方法,象下面這樣:如何實現Spring數據JPA動態查詢和聯合查詢
if(phone!=null&&name!=null)
List<Buyer> findByPhoneAndName(phone,name)
else if(phone!=null)
List<Buyer> findByPhone(phone)
else if(name!=null)
List<Buyer> findByName(name)
else
List<Buyer> findAll()
顯然,上面的代碼是非常bad.And其實,我的業務邏輯比較複雜,同時,我想搜索買家屬於一個特殊的供應商,並可能具有特殊地位的買家。通訊像下面的SQL:
select b.* from buyer b, buyer_supplier bs
where b.id = bs.buyer_id
and bs.supplier_id = 1
and bs.stauts = 'Activated'
and b.name like '%foo%'
and b.phone like '%123%'
,我也想建立動態SQL,如下圖所示:
select b.* from buyer b, buyer_supplier bs
where b.id = bs.buyer_id
if(name != null)
and b.name like '%foo%'
if(phone!=null)
and b.phone like '%123%'
if(supplierId>0)
and b.supplier_id = 1
if(status!=null)
and bs.stauts = 'Activated'
任何人都可以給我一些示例代碼或文檔可以教我如何實現我的上述目標?