大佬教程收集整理的这篇文章主要介绍了如何在Springboot中查看DB中是否存在List,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 springboot 应用程序,用于保存我的会议实体列表。我可以一次保存所有实体,但我想在每次保存之前检查列表中的一个实体是否已存在于我的数据库中,然后只保存不在其中的实体。但我有点卡住了,不知道该怎么做。有人可以看看我的代码并给我建议吗?
会议控制器:
@PostMapPing("/")
public voID saveMeeTing(@requestbody List<MeeTing> meeTing){
List<MeeTing> exist =
meeTingservice.findAllMeeTingsWithname(meeTing.stream().map(m -> m.getMeeTingname()).collect(Collectors.toList()));
meeTing.removeAll(exist);
meeTingservice.saveMeeTing(meeTing);
}
会议服务:
public voID saveMeeTing(List<MeeTing> meeTing){
meeTingRepository.saveAll(meeTing);
}
存储库:
@Repository
public interface MeeTingRepository extends JpaRepository<MeeTing,Long> {
}
这就是你想要的功能
@transactional
public void saveMeeTing(List<MeeTing> meeTing){
List<MeeTing> alreadyExist = meeTingRepository.findBymeeTingNameIn(meeTing.stream().map(m -> m.getMeeTingName()).collect(Collectors.toList());
meeTing.removeAll(alreadyExist);
meeTingRepository.saveAll(meeTing);
}
然后只需定义该存储库方法
@Repository
public interface MeeTingRepository extends JpaRepository<MeeTing,Long> {
List<MeeTing> findBymeeTingNameIn (List<String> meeTingNames);
}
记得覆盖会议实体中的 equals
和 hashcode
以考虑 id
字段。
您可以检查您的会议是否在数据库中。试试这个。
List<MeeTing> findByValueIn(List<MeeTing> values);
,
既然您已经计划使用 JpaRepository,请利用@Query 和批量查询
@Repository
//custom query using IN
public interface MeeTingRepository extends JpaRepository<MeeTing,Long>
{
@Query("SELECT m from MEETinG m where m.name IN (:names)")
public List<MeeTings> findAllMeeTingWithNames(List<String> meeTings)
}
@service
class MeeTingservice{
private MeeTingRepository meeTingRepository;
...
//other code....
@Autowired
public MeeTingservice(MeeTingRepository meeTingRepository){
this.meeTingRepository = meeTingRepository;
}
public void saveAllMeeTings(List<MeeTing> meeTings){
//call repository custom query here
names = meeTings.stream()
.map((m) -> m.Name)
.collect(Collectors.toList());
List<MeeTing> exisTingMeeTings = meeTingRepository.findAllMeeTingWithNames(names);
//delete using a single query
meeTingRepository.deleteAllInBatch(exisTingMeeTings);
meeTingRepository.saveAllAndFlush(meeTings);
}
.....
}
以上是大佬教程为你收集整理的如何在Springboot中查看DB中是否存在List全部内容,希望文章能够帮你解决如何在Springboot中查看DB中是否存在List所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。