使用 Java 的 @TableId 注解实现联合主键
在 Java 开发中,使用 MyBatis Plus 为数据库实体类设置联合主键是一个常见需求。本篇文章将逐步指导你如何使用 @TableId 注解实现联合主键,适合刚入行的小白。
流程概述
以下是实现联合主键的基本步骤:
| 步骤 | 说明 |
|---|---|
| 1 | 引入相应的依赖 |
| 2 | 创建实体类 |
| 3 | 使用 @TableId 注解标记联合主键 |
| 4 | 在 Mapper 接口中配置方法 |
| 5 | 在服务层中使用该 Mapper |
1. 引入依赖
确保在你的 pom.xml 中添加了 MyBatis Plus 的依赖和数据库驱动。以下是 Maven 依赖示例:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
2. 创建实体类
接下来,创建一个实体类,示例为 UserRole,它代表用户与角色的关系。
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
// 指定表名
@TableName("user_role")
public class UserRole {
// 联合主键 user_id
@TableId(value = "user_id")
private Long userId;
// 联合主键 role_id
@TableId(value = "role_id")
private Long roleId;
// Getters and Setters
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getRoleId() {
return roleId;
}
public void setRoleId(Long roleId) {
this.roleId = roleId;
}
}
3. 使用 @TableId 注解标记联合主键
在 UserRole 类中,我们使用了 @TableId 注解来指定两个字段为联合主键。MyBatis Plus 会用这两个字段来唯一标识记录。
4. 在 Mapper 接口中配置方法
接下来,创建一个对应的 Mapper 接口,通常是 <Entity>Mapper.java。你可以用下面的代码创建 UserRoleMapper。
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
// Mapper 接口,继承 BaseMapper
public interface UserRoleMapper extends BaseMapper<UserRole> {
// 此处可以添加自定义的查询方法
}
5. 在服务层中使用该 Mapper
在服务层,定义一个服务类来使用 UserRoleMapper。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
// 服务类
@Service
public class UserRoleService {
@Autowired
private UserRoleMapper userRoleMapper;
// 查询所有用户与角色的关系
public List<UserRole> getAllUserRoles() {
return userRoleMapper.selectList(null);
}
}
类图示例
以下是 UserRole 类的 UML 类图示例,使用 Mermaid 语法:
classDiagram
class UserRole {
+Long userId
+Long roleId
+getUserId(): Long
+setUserId(Long userId)
+getRoleId(): Long
+setRoleId(Long roleId)
}
小结
在本篇文章中,我们逐步介绍了如何在 Java 中使用 MyBatis Plus 的 @TableId 注解实现联合主键。流程包括:引入依赖、创建实体类、设置联合主键注解、配置 Mapper 接口以及在服务层中使用这些配置。通过这几个步骤,你将能够在项目中轻松实现联合主键功能。
希望这篇文章能帮助你更好地理解 MyBatis Plus 的联合主键实现。如有疑问,欢迎随时交流!
















