我对编程很陌生,所以请原谅我:)
我必须使用Spring完成一个项目,目前我在如何使用findBy方法方面遇到了一些困难。
我想要创建一个文件夹系统,在该系统中,您可以看到通过设置private boolean shared = true;而共享的其他用户的每个文件夹。
接下来我做的就是编辑“文件夹”的服务类,我想写这样的东西:
public List<Folder> getsharedFolder() {
return folderRepository.findBy___();
}如何才能准确地获得布尔“共享”设置为true的文件夹?
发布于 2018-07-03 16:59:38
您可以添加此方法:
List<Folder> findBySharedTrue();在您的FolderRepository类上:
public interface FolderRepository extends CrudRepository<Folder, Integer> {
List<Folder> findBySharedTrue();
}它将使用实体shared中的字段Folder,并且只返回shared字段等于true的文件夹。
发布于 2018-07-03 17:30:23
使用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());
}
}结果

发布于 2018-07-03 18:10:11
根据我对"findBy“方法的了解,如果您将布尔值设置为搜索的标准(请参阅此网站获得文档:https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/FindBy.html),该函数将能够工作。
但是,您可以创建一个属性,该属性是布尔值的字符串变体(如为true/false保留一个字符串值)。在该实例中,findBy方法应该可以很好地工作。
如果不希望添加额外的组件,可以尝试继承类,然后重写方法(创建一个超类),该方法也将检查布尔组件(可能扩展功能?)。然而,我不知道你将如何实现它,它更多的是一个抽象的想法,而不是一个真正的建议
https://stackoverflow.com/questions/51159409
复制相似问题