@Transactional @Override publicS save(S entity) { Assert.notNull(entity, "Entity must not be null."); if (entityInformation.isNew(entity)) { em.persist(entity); return entity; } else { return em.merge(entity); } }
由代码可知,它是先去判断了entity是否为new:
【资料图】
如果是new,就执行save方法;
如果非new,则执行update方法。这就是jpa为啥只有save接口没有update接口的原因吧!
此时我们应该有个疑惑:怎么样才算new呢?继续往下看:
/**
* Must be {@link Transient} in order to ensure that no JPA provider complains because of a missing setter.
*
* @see org.springframework.data.domain.Persistable#isNew()
*/
@Transient // DATAJPA-622
@Override
public boolean isNew() {
return null == getId();
}
恍然大悟,原来他是去看 entity的id(实体类的主键)是否存在:不存在就是new。(通俗易懂,很好理解)
添加 save方法(save是三方件自带接口不需要再dao层中添加)
@Transactional
public User save(User user) {
return userDao.save(user);
}
/**
* 单条数据保存
* @param id 自增的,可以不填
* @param name
* @param age
* @return
*/
@GetMapping("/save")
public User save(Integer id,String name, Integer age){
User user = new User();
user.setId(id);
user.setName(name);
user.setAge(age);
return userService.save(user);
}
浏览器测试OKhttp://localhost:7777/save?id=1&name=lili&age=18
测试id存在的情况OKhttp://localhost:7777/save?id=1&name=毛毛&age=20
/* * (non-Javadoc) * @see org.springframework.data.jpa.repository.JpaRepository#save(java.lang.Iterable) */ @Transactional @Override publicListsaveAll(Iterableentities) { Assert.notNull(entities, "Entities must not be null!"); Listresult = new ArrayList<>(); for (S entity : entities) { result.add(save(entity)); } return result; }
一目了然,saveAll其实就是传入entity的集合,然后遍历进行save操作
添加 saveAll方法(saveAll是三方件自带接口不需要再dao层中添加)
@Transactional publicListsaveAll(Iterableentities) { return userDao.saveAll(entities); }
/**
* 批量保存数据
* @param ids
* @param names
* @param ages
* @return
*/
@GetMapping("/saveAll")
public List saveAll(int[] ids,String[] names,Integer[] ages){
List list = new ArrayList<>();
for(int i=0; i浏览器测试OKhttp://localhost:7777/saveAll?ids=2,3&names=丁丁,壮壮&ages=13,14
注: 如果在实体类中的id上添加注解@GeneratedValue(strategy = GenerationType.IDENTITY),可以给id增加自增属性,这样我们就无需再传入id了
以上就是Spring JPA之save方法示例详解的详细内容,更多关于Spring JPA save方法详解的资料请关注脚本之家其它相关文章!
标签:
这篇文章主要为大家介绍了SpringJPA之save方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,
1、歌名-山茶花歌手-赵鹏专辑-再低音一次山茶花你说他的家开满山茶花每当那春天三月乡野如图画村里姑娘上山
今天来聊聊关于长春公交线路查询299路车路线图,长春公交线路查询的文章,现在就为大家来简单介绍下长春公
今日任务任务先祖-鼓掌云野三塔图云野三塔图(左侧岛)和陌生人一起坐在长凳上和陌生人一起坐在任意图的长
大众网记者武红鹏通讯员马金忠德州报道为进一步强化干部队伍作风建设,保障节日期间国省干线公路运行安全平
1、尊敬的(**单位)领导:我叫(XXX),是XXX岗位的一名职工。2、由于患有强直性脊柱炎,这是一种需要终身吃药
1、深情从来都只有被辜负,只有薄情才会被记住。2、再见了,2020年!你好,2021年!没实力的愤怒毫无意义。3
1、“扪心自问”的意思是:摸着胸口,自己问自己怎么样。2、指自己反省。3、扪心自问,读音[ménxīnzìwèn
美国会众院通过债务上限法案 共和党欲先发制人施压拜登谈判海洋美国共和党人把持的国会众议院26日以区区两
【世界说】“敲错门”枪击事件频发美媒批美国扭曲的枪支文化:即便没受威胁,也要“先开枪”
内蒙古电力集团:今年一季度最大供电负荷达3625万千瓦,今年一季度,集团公司销售电量672 43亿千瓦时,同比
2023年招警考试、辅警招聘、法检招聘人数汇总(4月27日)
九巴表示,为迎接通关后首个五 一黄金周,九巴来往香园围口岸至屯门的B9线,将加开两天平日服务,生效日
杉杉股份公告,一季度净利润5 73亿元,同比下降29 05%;受行业环境变化影响,权益法核算的巴斯夫杉杉电池
1、你好,我是大鱼儿不吐泡泡,用百度网盘分享给你。2、点开就可以保存,链接永久有效^_^1,链接:提取码:jc
天空大冒险,出发!今日,《哆啦A梦》电影系列最新作品《哆啦A梦:大雄与天空的理想乡》曝光先导预告及先导
这几天,在福州的重点商圈——东街口,处处洋溢着数字生活的气息,在数字中国建设峰会前夕,鼓楼区启动了“
佛医保怎样买佛医保投保流程介绍社保网小编整理了最新资讯。佛医保是佛山地区推出的一款专属普惠型补充医疗
1905电影网讯《碟中谍7:致命清算(上)》公布全新剧照。在剧照上,主演汤姆克鲁斯似乎正在展开逃亡。他跨
近日,杭州医学院临床医学院“骨像手绘”大赛作品正在校园里展出,充满哲理色彩和人文气息的素描骨绘作品让
有许多原神玩家不知道原神丰饶之海成就完成方法指南,接下来将由第一资讯网小编收集的《原神丰饶之海成就完
2003年,美军攻入伊拉克首都巴格达,使这个曾经繁华的城市遭受沉重打击。伊拉克当地的一份研究报告表明,巴
错怪你了邻居!女子意外翻到半年前藏在电瓶车里的钱和纸条近日,六盘水一女子意外翻到了藏在电瓶车里的一张
日产逍客可以选择珍珠白、炫目红、月光银、火花金、琥珀金、玛瑙红、碧玉黑、象牙白、梦幻银、菲利普灰、时
时间:2023年5月30日地点:苏州“同超越,共成就”AMD 携手我们众多合作伙伴,诚邀您参与5月30日,在美丽
校企合作,加强人才引入和培养发展,增强城市综合竞争力,4月26日,临港新片区举办2023年“商旅临距离”暨
今天,PlayStation公布了5月PS+会免游戏的容量大小,感兴趣的玩家可以提前做好准备预留出空间。本次会免持
资料显示,创业板指由深圳证券交易所创业板中市值大、流动性好的100只股票组成,以综合反映创业板市场的整
和前任分手了 发现怀孕了要打掉男方不支付打胎费
对于民进党当局被爆有意扩编“警政署”保安警察,并将实施多项军事训练,拟规划为“第二陆军”,台湾“中广
Copyright © 2015-2022 现在服装网版权所有 备案号:粤ICP备18023326号-5 联系邮箱:855 729 8@qq.com