关于SpringBoot使用JPA的更新操作(save方法和原生SQL方法)


关于SpringBoot使用JPA的更新操作(save方法和原生SQL方法)
https://blog.csdn.net/weixin_38809962/article/details/81478635?spm=1001.2101.3001.6650.17&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-17.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-17.pc_relevant_default&utm_relevant_index=23

使用save时候先根据id把对象查询到 再更改具体某个属性的值再值save 会避免 部分属性更改时候 数据异常情况

自学SpringBoot遇到些问题,才有了这篇博客,里面可能有些错误,欢迎指教。

1、使用save方法进行数据更新


   
   
   
  1. //实体类
  2. @Entity
  3. public class Student extends JpaRepositoriesAutoConfiguration{
  4. private Integer id;
  5. private String name;
  6. private Integer age;
  7. //省略getter/setter方法和构造函数
  8. }

   
   
   
  1. //Controller类
  2. @RestController
  3. public class HelloController {
  4. @Autowired
  5. private StuRepository stuRepository;
  6. public void updateOne (@RequestParam("name") String name, @RequestParam("id") Integer id) {
  7. Student student = new Student();
  8. student.setName(name);
  9. student.setId(id);
  10. stuRepository.save(student); //实现数据更新
  11. }

使用该save方法进行更新时会发现,更新全部字段时会正常实现,可是在只更新部分字段时,会发现没有更新的字段被置为null;

、使用原生SQL方法实现数据更新


   
   
   
  1. //原生SQL实现更新方法接口
  2. @Query(value = "update Studnet set name=?1 where id=?2 ", nativeQuery = true)
  3. @Modifying
  4. public void updateOne (String name,int id);

   
   
   
  1. //在这个方法中调用上面的接口
  2. @Transactional
  3. public String updateOne (@RequestParam("name") String name, @RequestParam("id") Integer id) {
  4. stuRepository.updateOne(name,id);
  5. return "更新成功";
  6. }

使用原生SQL方法来实现更新,就比较正常了,可以实现全部字段更新,同样可以实现部分字段更新。

这里是增删改查实例 
http://download.csdn.net/download/sinat_33889619/10035078 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM