SpringDataJPA的保存和更新操作

1. SpringDataJPA的保存和更新操作

1.1 環境搭建和數據來源

參考上一篇博客SpringDataJPA分頁

1.2 操作

其實在SpringDataJPA中,保存和更新都使用的是 save(S s)方法,下面我們看demo.
我在user_info表中添加個用戶Helena,然後修改其用戶名爲Helena1.

1.2.1 添加用戶Helena

	@Test
    void saveUser(){
        User user = new User();
        user.setUserName("Helena");
        user.setPassword("123456");
        user.setPhone("13110477888");
        user.setEmail("[email protected]");
        User addUser = userRepository.save(user);//更新操作
        log.info("addUser={}",addUser);
    }

輸出爲:

Hibernate: insert into user_info (email, password, phone, user_name) values (?, ?, ?, ?)
addUser=User(id=7, userName=Helena, password=123456, phone=13110477888, email=xxx@126.com)

爲了觀看方便,我刪除了日誌裏面的2020-04-29 22:52:42.902 INFO 12792 --- [ main] c.s.service.impl.UserServiceImplTest :

1.2.2 更新用戶Helena爲Helena1

	@Test
    void updateUser(){
        User user = userRepository.findById(7).orElse(null);
        user.setUserName("Helena1");
        User updateUser = userRepository.save(user);//更新操作
        log.info("updateUser={}",updateUser);

    }

輸出爲:

Hibernate: select user0_.id as id1_0_0_, user0_.email as email2_0_0_, user0_.password as password3_0_0_, user0_.phone as phone4_0_0_, user0_.user_name as user_nam5_0_0_ from user_info user0_ where user0_.id=?
Hibernate: select user0_.id as id1_0_0_, user0_.email as email2_0_0_, user0_.password as password3_0_0_, user0_.phone as phone4_0_0_, user0_.user_name as user_nam5_0_0_ from user_info user0_ where user0_.id=?
Hibernate: update user_info set email=?, password=?, phone=?, user_name=? where id=?
updateUser=User(id=7, userName=Helena1, password=123456, phone=13110477888, email=xxx@126.com)

1.3 總結

由此可見,SpringDataJPA的添加和更新都是save(S s),它是根據主鍵去數據庫查詢:如果數據庫不存在這條數據,就會執行保存(即將這條數據插入到數據庫);如果數據庫存在這條數據,就會根據主鍵去更新這條數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章