如何使用Spring CrudRepository查询布尔属性?

14

我正在使用Spring的CrudRepository进行数据库查询。我该如何创建一个方法签名(而不是自己编写SQL select语句)来查询一个布尔属性?

以下方式无法正常工作:

class MyEntity {
       private boolean active;
}


interface MyEntityRepository implements CrudRepository<MyEntity, Long> {
   List<MyEntity> findActive(); //or also: findNotActive();
}
1个回答

27

我会做:

interface MyEntityRepository implements CrudRepository<MyEntity, Long> {
   List<MyEntity> findByActive(Boolean active);
}

那么服务层将会是:

public class MyEntityServiceImpl implements MyEntityService{


   public List<MyEntity> findActive() {
      return myEntityRepository.findByActive(true);
   }
}

更新

正如@OliverGierke指出的那样,您可以通过执行以下操作更进一步简化您的存储库:

interface MyEntityRepository implements CrudRepository<MyEntity, Long> {
   List<MyEntity> findByActiveTrue(); //you could also use findByActiveFalse
}

对于所有支持的关键字,您应该查看

查询创建

参考文档的部分。


好的,这可能比直接将结果绑定到布尔值要好得多。 - membersound
@membersound 可能是的! - geoand
12
很好的回答,你可能想要添加一个选项直接使用 findByActiveTrue(),以防止每次调用都需要提供参数。 - Oliver Drotbohm
1
感谢您的建议@Olivergierke!那是一个很好的建议!我一旦到电脑前就会更新答案。 - geoand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接