繁体   English   中英

如何使用“ findBy”方法?

[英]How to use the “findBy” method?

我对编程很陌生,所以请留意:)

我必须在Spring上进行项目,目前在如何使用findBy方法方面有些挣扎。

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

我要做的下一件事是编辑“文件夹”的服务类,我想编写如下内容:

public List<Folder> getsharedFolder() {
    return folderRepository.findBy___();
}

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

您可以添加以下方法:

 List<Folder> findBySharedTrue();

FolderRepository类上:

public interface FolderRepository extends CrudRepository<Folder, Integer> {
     List<Folder> findBySharedTrue();
}

它将使用该领域shared从实体Folder ,并只返回文件夹shared字段等于true

使用JPARepository代替CRUDRepository

实体

@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;
    }

}

资料库

public interface FolderRepository extends JpaRepository<Folder, Integer>{

    List<Folder> findByGeteilt(boolean shared);

}

测试

@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());


    }

}

结果

测试成功

根据我对“ findBy”方法的了解,如果您将布尔值设置为搜索条件,则该功能将可以工作(请参阅此网站以获取文档: https : //seleniumhq.github.io/selenium/docs/api /java/org/openqa/selenium/support/FindBy.html )。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM