使用 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 的联合主键实现。如有疑问,欢迎随时交流!