mybatisplus保存
时间: 2023-09-01 15:07:11 浏览: 99
MyBatis-Plus 是 MyBatis 的增强工具,在使用 MyBatis-Plus 进行数据库操作时,我们可以使用其提供的 `save` 方法来进行保存操作。
假设我们有一个 User 实体类,我们可以使用如下代码来保存一个 User 对象:
```java
User user = new User();
user.setName("Tom");
user.setAge(20);
user.setEmail("tom@example.com");
userMapper.save(user);
```
其中,`userMapper` 是 MyBatis 的 Mapper 接口,通过 Spring 或 MyBatis-Spring 等框架进行注入。
在保存操作时,MyBatis-Plus 会自动判断实体类中的主键是否有值,如果有值则执行更新操作,否则执行插入操作。
此外,MyBatis-Plus 还提供了 `saveOrUpdate` 方法,该方法在实体类中主键有值时执行更新操作,在主键为 null 时执行插入操作。你可以根据具体的业务需求选择使用哪个方法。
相关问题
mybatisplus 保存或更新
MyBatis-Plus 提供了 `saveOrUpdate` 方法来实现保存或更新操作。该方法的实现原理是在执行保存操作前先查询数据,如果查询到了数据就执行更新操作,否则执行保存操作。
以下是示例代码:
```java
User user = new User();
user.setName("Tom");
user.setAge(18);
user.setEmail("tom@example.com");
// 根据ID判断是否存在记录,存在则更新,不存在则插入
boolean success = userService.saveOrUpdate(user);
```
如果 `user` 对象中没有设置ID,则会调用 `insert` 方法进行插入操作;如果设置了ID,则会调用 `updateById` 方法进行更新操作。
如果你想要自定义判断是否存在记录的逻辑,可以使用 `Wrapper` 来查询数据,例如:
```java
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getEmail, "tom@example.com");
boolean success = userService.saveOrUpdate(user, wrapper);
```
以上代码会根据 `wrapper` 对象指定的条件查询数据,如果查询到了数据就执行更新操作,否则执行保存操作。
MyBatisPlus批量保存
MyBatisPlus提供了多种批量保存方法,以下是其中两种常用的方法:
1. insertBatch:批量插入数据,返回影响的行数。
```java
List<User> userList = new ArrayList<>();
userList.add(new User("user1", "123456"));
userList.add(new User("user2", "123456"));
userList.add(new User("user3", "123456"));
int rows = userMapper.insertBatch(userList);
```
2. saveBatch:批量保存数据,返回是否保存成功。
```java
List<User> userList = new ArrayList<>();
userList.add(new User("user1", "123456"));
userList.add(new User("user2", "123456"));
userList.add(new User("user3", "123456"));
boolean success = userService.saveBatch(userList);
```
需要注意的是,使用以上两种方法时,需要在实体类中指定主键生成策略,否则会报错。例如,使用`@TableId(type = IdType.AUTO)`指定主键自动生成策略。
阅读全文