我正在编写rest apis,它支持使用spring数据jpa和mysql作为数据库进行过滤。我可以通过使用ExampleMatcher和Example来做到这一点。但是有一种情况可以为一个字段传递多个值(意味着我需要在这里使用子句)。而使用exampleMatcher无法做到这一点。我在这里举例解释我的用例。这是我的班级。
public class Merchant {
private String merchantId;
private String merchantGroupId;
private String status;
}
这是我的JPA存储库实现。
public interface MerchantRepository extends JpaRepository<Merchant, Serializable> {
public List<Merchant> findByMerchantGroupIdIn(List<String> merchantGroupIds);
public List<Merchant> findByMerchantGroupIdInAndStatus(List<String> merchantGroupIds, String status);
public List<Merchant> findByMerchantId(String merchantId);
public List<Merchant> findByMerchantIdAndStatus(String merchantId, String status);
public List<Merchant> findByStatus(String status);
}
这就是我所说的:
if (merchantGroupIds != null && merchantId == null && status == null) {
List<Merchant> merchants = findByMerchantGroupIdIn(merchantGroupIds);
} else if (merchantGroupIds != null && status != null && merchantId == null) {
List<Merchant> merchants = findByMerchantGroupIdInAndStatus(merchantGroupIds, status);
} else if (merchantGroupIds == null && merchantId != null && status == null) {
List<Merchant> merchants = findByMerchantId(merchantId);
} and many if else
我想避免这些全部if else和一个泛型函数,它将处理所有空值并忽略空值。有没有办法用弹簧数据来实现这个目标?