mybatisplus-plus联合主键
时间: 2023-07-04 08:28:27 浏览: 335
mybatis-plus id主键生成的坑
如果你需要在 Mybatis-Plus 中使用联合主键,可以使用 `@TableId` 注解的 `value` 属性来指定多个字段作为联合主键。例如:
```java
@Data
@TableName("user_role")
public class UserRole {
@TableId(value = {"user_id", "role_id"}, type = IdType.INPUT)
private Long userId;
@TableField("role_id")
private Long roleId;
private String remark;
}
```
在上面的示例中,`@TableId` 注解的 `value` 属性指定了 `user_id` 和 `role_id` 两个字段作为联合主键,`type` 属性指定了主键生成策略为手动输入。注意,在使用联合主键时,必须指定主键生成策略为手动输入,否则会出现主键冲突的问题。
如果你需要在 Mybatis-Plus 中执行联合主键的 CRUD 操作,可以通过 `QueryWrapper` 或 `LambdaQueryWrapper` 来构建查询条件,例如:
```java
QueryWrapper<UserRole> wrapper = new QueryWrapper<>();
wrapper.eq("user_id", 1L)
.eq("role_id", 2L);
UserRole userRole = userRoleMapper.selectOne(wrapper);
```
在上面的示例中,使用 `QueryWrapper` 构建了一个查询条件,查询 `user_id` 为 1,`role_id` 为 2 的用户角色记录。你也可以使用 `LambdaQueryWrapper` 来构建查询条件,例如:
```java
LambdaQueryWrapper<UserRole> lambdaWrapper = new LambdaQueryWrapper<>();
lambdaWrapper.eq(UserRole::getUserId, 1L)
.eq(UserRole::getRoleId, 2L);
UserRole userRole = userRoleMapper.selectOne(lambdaWrapper);
```
阅读全文