程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在Springboot中查看DB中是否存在List大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在Springboot中查看DB中是否存在List?

开发过程中遇到如何在Springboot中查看DB中是否存在List的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在Springboot中查看DB中是否存在List的解决方法建议,希望对你解决如何在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);

}

记得覆盖会议实体中的 equalshashcodeid 字段。

,

您可以检查您的会议是否在数据库中。试试这个。

 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,请注明来意。