用spring数据jpa过滤api

时间:2017-08-26 08:23:46

标签: java mysql spring hibernate spring-data-jpa

我正在编写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和一个泛型函数,它将处理所有空值并忽略空值。有没有办法用弹簧数据来实现这个目标?

0 个答案:

没有答案