首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用"findBy“方法?

如何使用"findBy“方法?
EN

Stack Overflow用户
提问于 2018-07-03 16:39:13
回答 3查看 2.9K关注 0票数 1

我对编程很陌生,所以请原谅我:)

我必须使用Spring完成一个项目,目前我在如何使用findBy方法方面遇到了一些困难。

我想要创建一个文件夹系统,在该系统中,您可以看到通过设置private boolean shared = true;而共享的其他用户的每个文件夹。

接下来我做的就是编辑“文件夹”的服务类,我想写这样的东西:

代码语言:javascript
复制
public List<Folder> getsharedFolder() {
    return folderRepository.findBy___();
}

如何才能准确地获得布尔“共享”设置为true的文件夹?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-03 16:59:38

您可以添加此方法:

代码语言:javascript
复制
 List<Folder> findBySharedTrue();

在您的FolderRepository类上:

代码语言:javascript
复制
public interface FolderRepository extends CrudRepository<Folder, Integer> {
     List<Folder> findBySharedTrue();
}

它将使用实体shared中的字段Folder,并且只返回shared字段等于true的文件夹。

票数 3
EN

Stack Overflow用户

发布于 2018-07-03 17:30:23

使用JPARepository而不是CRUDRepository

实体

代码语言:javascript
复制
@Entity
public class Folder {
    @Id
    @GeneratedValue
    private Integer FolderID;
    @Column(unique = true)
    private String Foldername;
    private boolean geteilt = false;

    public Integer getFolderID() {
        return FolderID;
    }

    public void setFolderID(Integer folderID) {
        FolderID = folderID;
    }

    public String getFoldername() {
        return Foldername;
    }

    public void setFoldername(String foldername) {
        Foldername = foldername;
    }



    public boolean isGeteilt() {
        return geteilt;
    }

    public void setGeteilt(boolean geteilt) {
        this.geteilt = geteilt;
    }

}

存储库

代码语言:javascript
复制
public interface FolderRepository extends JpaRepository<Folder, Integer>{

    List<Folder> findByGeteilt(boolean shared);

}

测试

代码语言:javascript
复制
@RunWith(SpringRunner.class)
@DataJpaTest
public class FolderTest{

    @Autowired
    private TestEntityManager entityManager;

    @Autowired
    private FolderRepository folderrepo;


    @Test
    public void whenFindByshared() {

        // given

        Folder folder = new Folder();
        folder.setFolderID(1);
        folder.setFoldername("folder1");
        folder.setGeteilt(true);

        Folder folder1 = new Folder();
        folder1.setFolderID(2);
        folder1.setFoldername("folder2");
        folder1.setGeteilt(true);

        Folder folder2 = new Folder();
        folder2.setFolderID(1);
        folder2.setFoldername("folder3");
        folder2.setGeteilt(false);

        folderrepo.saveAndFlush(folder);
        folderrepo.saveAndFlush(folder1);
        folderrepo.saveAndFlush(folder2);

        // when

        List<Folder> sharedFolders =new ArrayList<>();
        sharedFolders = folderrepo.findByGeteilt(true);

        assertThat(sharedFolders.get(0).getFoldername())
          .isEqualTo(folder1.getFoldername());


    }

}

结果

票数 0
EN

Stack Overflow用户

发布于 2018-07-03 18:10:11

根据我对"findBy“方法的了解,如果您将布尔值设置为搜索的标准(请参阅此网站获得文档:https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/FindBy.html),该函数将能够工作。

但是,您可以创建一个属性,该属性是布尔值的字符串变体(如为true/false保留一个字符串值)。在该实例中,findBy方法应该可以很好地工作。

如果不希望添加额外的组件,可以尝试继承类,然后重写方法(创建一个超类),该方法也将检查布尔组件(可能扩展功能?)。然而,我不知道你将如何实现它,它更多的是一个抽象的想法,而不是一个真正的建议

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51159409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档