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),它是根据主键去数据库查询:如果数据库不存在这条数据,就会执行保存(即将这条数据插入到数据库);如果数据库存在这条数据,就会根据主键去更新这条数据

你可能感兴趣的:(SpringBoot)