最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot+spring?data?jpa實現(xiàn)新增及批量新增方式

 更新時間:2021年11月23日 10:09:00   作者:不缺從頭再來的勇氣  
這篇文章主要介紹了springboot+spring?data?jpa實現(xiàn)新增及批量新增方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

springboot+spring data jpa實現(xiàn)新增及批量新增

spring data jpa (以下簡稱jpa)。這個orm其實和mybatis還是差不多的。但是相對于mybatis來說,省去很多方法,畢竟jpa來說,官方文檔給的說法是編寫者只需要書寫接口。剩下的事就交由jpa來完成。當時,灑家還是不信的。當你用過一次后,你就會發(fā)現(xiàn)。真的是這樣。只能用兩個字來形容,即是“真香”。

好了,廢話不多說了。今天貼的代碼不包含基礎配置哈。。

實體類如下:

在這里插入圖片描述

controller層:

@PostMapping(value = "/add")
    @ApiOperation(value = "新增功能", notes = "新增功能")
    public ResultVo<?> addInfo(@RequestBody @Valid SysAdminUser adminUser){
        return  demoService.addInfo(adminUser);
    }

在這里插入圖片描述

service層:

public  ResultVo<?> addInfo(SysAdminUser adminUser){
        SysAdminUser sysAdminUser = modelMapper.map(adminUser, SysAdminUser.class);
        demoRepository.save(sysAdminUser);
        return ResultVo.success();
    }

repository層:

在這里插入圖片描述

其實,具體的單條數(shù)據(jù)添加還是看個人的業(yè)務邏輯而說,每個人想法不一樣,寫的代碼方式也不一樣。如您有更好的寫法。也可以貼出來,大家一起進步。

說完單條,該說批量了

用的實體類都是一樣的

controller層:

 @PostMapping(value = "/batch/add")
      @ApiOperation(value = "新增功能", notes = "批量新增")
          public Map<String,Object> addListModelParams(@RequestBody List<SysAdminUser> list) {
          int listsize = list.size();
          Map<String,Object> resultMap = new HashMap<>();
          if (listsize == 0) {
              throw new RuntimeException("集合為空!") ;
          } else {
              //批量存儲的集合
              List<SysAdminUser> data = new ArrayList<SysAdminUser>();
              //批量存儲
              for (SysAdminUser s : list) {
                  if(data.size() == listsize/10) {
                      demoService.save(data);
                      data.clear();
                  }
                  data.add(s);
              }
              //將剩下的數(shù)據(jù)也導入
              if(!data.isEmpty()) {
                  demoService.save(data);
                  resultMap.put("code", "0000");
                  resultMap.put("message", "批量添加成功");
              }
          }
          return resultMap;
      }

service層:

public void   save(List<SysAdminUser> list) {
        demoRepository.saveAll(list);
    }

因為在service層的時候,它其實也調(diào)的是jpa里面自帶的方法。

而repository層的代碼也是單純的一個接口罷了

如下:

在這里插入圖片描述

springdatajpa 新增操作注意

org.hibernate.PersistentObjectException: detached entity passed to persist異常

簡單地來看,將一個游離的對象要被持久化(save)時報錯。

我們知道要持久化對象時候,通常Hibernate會根據(jù)ID生成策略自動生成ID值,但是這個對象ID已經(jīng)有值,所有拋錯。

這個錯誤是我在配置如下1一對多@OneToMany的關聯(lián)關系時報的錯。

@OneToMany(targetEntity = Role.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER) 
@JoinTable(name = "sys_user_role", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id", unique = true)) 
private Set<Role> roles = new HashSet<>(); 

因為級聯(lián)關系是CascadeType.ALL,所以save時會保存級聯(lián)的對象Role,但是Role已經(jīng)存在,因此就報錯了。

將cascade改為CascadeType.MERGE或者CascadeType.REFRESH即可,表示級聯(lián)對象在Role表存在則進行update操作,而不做save操作。級聯(lián)操作時謹慎用CascadeType.ALL

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Eclipse將Maven項目打成jar包的方法

    Eclipse將Maven項目打成jar包的方法

    這篇文章主要介紹了Eclipse將Maven項目打成jar包的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2007-09-09
  • 教你如何把Eclipse創(chuàng)建的Web項目(非Maven)導入Idea

    教你如何把Eclipse創(chuàng)建的Web項目(非Maven)導入Idea

    這篇文章主要介紹了教你如何把Eclipse創(chuàng)建的Web項目(非Maven)導入Idea,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 有關ThreadLocal的面試題你真的懂了嗎

    有關ThreadLocal的面試題你真的懂了嗎

    這篇文章主要介紹了面試題ThreadLocal,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-06-06
  • 詳解Java8新特性如何防止空指針異常

    詳解Java8新特性如何防止空指針異常

    要說 Java 編程中哪個異常是你印象最深刻的,那 NullPointerException 空指針可以說是臭名昭著的,不要說初級程序員會碰到, 即使是中級,專家級程序員稍不留神,就會掉入這個坑里,本文就和大家聊聊Java8新特性如何防止空指針異常
    2023-08-08
  • zookeeper集群搭建超詳細過程

    zookeeper集群搭建超詳細過程

    這篇文章主要介紹了zookeeper集群搭建超詳細過程,本文對zookeeper集群測試通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • 一篇文章帶你了解Java SpringBoot四大核心組件

    一篇文章帶你了解Java SpringBoot四大核心組件

    這篇文章主要介紹了SpringBoot四大核心組件的使用小結,詳細的介紹了這方面的知識,有興趣的可以了解一下,希望能夠給你帶來幫助
    2021-09-09
  • MyBatis-Plus 動態(tài)表名SQL解析器的實現(xiàn)

    MyBatis-Plus 動態(tài)表名SQL解析器的實現(xiàn)

    這篇文章主要介紹了MyBatis-Plus 動態(tài)表名SQL解析器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 詳解Java中native方法的使用

    詳解Java中native方法的使用

    native是與C++聯(lián)合開發(fā)的時候用的!使用native關鍵字說明這個方法是原生函數(shù),也就是這個方法是用C/C++語言實現(xiàn)的,并且被編譯成了DLL,由java去調(diào)用。本文給大家介紹java 中native方法使用,感興趣的朋友一起看看吧
    2020-09-09
  • Spring自動裝配@Autowired教程

    Spring自動裝配@Autowired教程

    @Autowired注解是Spring中非常重要且常見的,接下來就簡要的介紹一下它的用法。@Autowired默認是通過set方法,按照類型自動裝配JavaBean,set方法可省略不寫,它主要是修飾在成員變量上
    2023-01-01
  • 基于Java實現(xiàn)一個簡單的單詞本Android App的實踐

    基于Java實現(xiàn)一個簡單的單詞本Android App的實踐

    本文基于Java實現(xiàn)了一個簡單的單詞本安卓app,用的是SQLite數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論

高雄市| 龙南县| 河北省| 临泽县| 阳江市| 改则县| 秦皇岛市| 丘北县| 嘉善县| 凌云县| 泸定县| 班玛县| 东安县| 丹江口市| 偏关县| 化隆| 钟山县| 静乐县| 中牟县| 南漳县| 文成县| 鄯善县| 凭祥市| 新竹县| 长治县| 余干县| 奉节县| 乌拉特中旗| 偏关县| 松原市| 信宜市| 环江| 尼玛县| 安丘市| 托克托县| 阿荣旗| 茶陵县| 九台市| 平山县| 商城县| 新余市|