mybatis-plus获取主键
时间: 2023-05-31 15:18:37 浏览: 1254
### 回答1:
在使用Mybatis-Plus框架进行增、删、改、查操作时,获取主键的方式有多种。
1.自动生成主键
Mybatis-Plus框架提供了主键生成策略,可以自动生成主键值,并将其赋给实体类属性。如:
```
User user = new User();
user.setName("张三");
user.setAge(20);
user.setEmail("zhangsan@163.com");
// 插入,自动生成主键
userMapper.insert(user);
// 获取主键值
Long id = user.getId();
```
2.手动设置主键
在实体类中添加@Id注解,指定主键属性。手动设置主键时,需要在插入记录时同时设置主键值。如:
```
@Table(value = "user")
public class User {
@Id
private Long id;
private String userName;
private Integer age;
private String email;
// getter、setter方法
}
// 在增加记录时手动设置主键值
User user = new User();
user.setId(1001L);
user.setUsername("张三");
user.setAge(20);
user.setEmail("zhangsan@163.com");
// 插入记录,手动设置主键
userMapper.insert(user);
// 获取主键值
Long id = user.getId();
```
3.使用MySQL自增主键
在实体类的@Id注解中设置@GeneratedValue注解的strategy属性为GenerationType.IDENTITY,表示使用数据库的自增主键。如:
```
@Table(value = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // MySQL自增主键
private Long id;
private String userName;
private Integer age;
private String email;
// getter、setter方法
}
// 插入记录,返回自动生成的主键值
User user = new User();
user.setUserName("张三");
user.setAge(20);
user.setEmail("zhangsan@163.com");
// 插入时自动生成主键
userMapper.insert(user);
// 获取主键值
Long id = user.getId();
```
以上是使用MyBatis-Plus框架获取主键的三种方法。
### 回答2:
mybatis-plus 是基于 MyBatis 的增强工具,它提供了很多方便的功能。它的主键自动生成方式分为两种:自增主键和UUID主键,获取主键的方法也有所不同。
对于自增主键,使用insert方法时,可以通过返回值的方式获取自增生成的主键。MyBatis-Plus提供了三种方法来获取自增主键:insert、insertBatch和insertBatchSomeColumn。
1. insert方法
在使用insert方法时,通过返回值获取自增生成的主键,如下:
```java
User user = new User();
user.setName("test");
user.setAge(18);
int success = userMapper.insert(user);
if (success == 1) {
System.out.println("插入成功,主键ID为:" + user.getId());
}
```
当插入成功时,可以通过user.getId()获取自增生成的主键。
2. insertBatch方法
在使用insertBatch方法时,传入的是一个List对象。如果这个List里面的元素的id属性为空,那么MyBatis-Plus会自动生成一个主键,并将此id赋值给List中的元素,如下:
```java
List<User> userList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setName("test" + i);
user.setAge(18 + i);
userList.add(user);
}
int success = userMapper.insertBatch(userList);
if (success == userList.size()) {
for (User user : userList) {
System.out.println("插入成功,主键ID为:" + user.getId());
}
}
```
当插入成功时,可以通过每个元素的user.getId()获取自增生成的主键。
3. insertBatchSomeColumn方法
在使用insertBatchSomeColumn方法时,需要在传入的DTO中指定需要生成主键的列,并且要将这些列的值都设置为null。接下来的操作与insertBatch方法类似,只是在DTO中指定需要生成主键的列,如下:
```java
List<User> userList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setName("test" + i);
user.setAge(18 + i);
user.setId(null);
userList.add(user);
}
int success = userMapper.insertBatchSomeColumn(userList);
if (success == userList.size()) {
for (User user : userList) {
System.out.println("插入成功,主键ID为:" + user.getId());
}
}
```
当插入成功时,可以通过每个元素的user.getId()获取自增生成的主键。
对于UUID主键,使用insert方法时,在插入数据后,可以通过获取实体类Id属性的值来获取UUID主键,如下:
```java
User user = new User();
user.setName("test");
user.setAge(18);
userMapper.insert(user);
System.out.println("插入成功,主键ID为:" + user.getId());
```
当插入成功时,可以通过user.getId()获取UUID主键。
综上所述,mybatis-plus 获取主键是非常方便的,而且还支持多种不同的主键生成方式。对于业务开发中常用的自增主键和UUID主键,mybatis-plus都提供了对应的获取主键的方式。
### 回答3:
Mybatis-plus是一个基于Mybatis的开源框架,提供了很多Mybatis的扩展功能,其中获取主键就是其中之一。在使用Mybatis-plus进行数据库操作时,获取主键的方法有多种,具体如下:
1.自增类型的主键
如果数据表中的主键是通过自增方式生成的,那么在插入新数据时主键会自动增加,Mybatis-plus会将新增的主键返回给我们。
示例代码:
```java
User user = new User();
user.setName("张三");
user.setAge(18);
user.setGender("男");
userMapper.insert(user);
System.out.println("新增用户的主键为:" + user.getId());
```
2.非自增类型的主键
如果数据表中的主键不是自增类型,我们需要自己为其指定主键。Mybatis-plus提供了一个IdWorker工具类,可以生成各种类型的主键。
示例代码:
```java
Long id = IdWorker.getId(); //生成主键
User user = new User();
user.setId(id);
user.setName("张三");
user.setAge(18);
user.setGender("男");
userMapper.insert(user);
System.out.println("新增用户的主键为:" + id);
```
3.仅返回新增主键
如果我们只需要获取新增数据的主键,而不需要获取其他字段的值,可以使用insert(…)方法的返回值进行获取。
示例代码:
```java
User user = new User();
user.setName("张三");
user.setAge(18);
user.setGender("男");
int result = userMapper.insert(user);
if(result > 0){
System.out.println("新增用户的主键为:" + user.getId());
}
```
4.使用注解返回主键
如果我们在实体类中通过注解指定了主键字段,那么在插入数据时主键会自动赋值,可通过实体类对象获取主键。
示例代码:
```java
public class User{
@TableId(type = IdType.AUTO) //指定主键,type为主键类型,AUTO为自增
private Long id;
private String name;
private Integer age;
private String gender;
//省略get/set方法
}
User user = new User();
user.setName("张三");
user.setAge(18);
user.setGender("男");
userMapper.insert(user);
System.out.println("新增用户的主键为:" + user.getId());
```
以上是Mybatis-plus获取主键的几种方法,选择哪种方法取决于实际需求,一般情况下我们可以通过自增类型的主键或IdWorker工具类进行获取主键。
阅读全文