MyBatis注解配置一对多和多对多

一、一对多、多对一

场景:
多首歌对应一个歌手,形成一对多、多对一关系。

音乐表:@ManyToOne
歌手表:@OneToMany

音乐表:

@ManyToOne
@JoinColumn(name = "singer_id")	//外键名称
private Singer singer;

歌手表:

@OneToMany
@JoinColumn(name = "singer_id") //音乐表的外键名称
private List<MusicStorage> musicStorageList;

二、多对多

场景:
多个收藏夹可以收藏多首歌,形成多对多关系。

注解:

  • @ManyToMany
  • @JoinTable:生成中间表

收藏夹表

@ManyToMany
@JoinTable(name = "music_storage_favorites",
        joinColumns = {@JoinColumn(name = "favorites_id")},
        inverseJoinColumns = {@JoinColumn(name = "music_id")}
        )
private List<MusicStorage> musicStorageList;

音乐表

@ManyToMany
@JoinTable(name = "music_storage_favorites",
        joinColumns = {@JoinColumn(name = "music_id")},
        inverseJoinColumns = {@JoinColumn(name = "favorites_id")}
)
private List<Favorites> favoritesList;

解释:
joinColumns 表示自身id字段,inverseJoinColumns 表示另一个表的id字段。
name 表示生成的中间表名称。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis-Plus配置一对多关系,可以通过使用 `@TableField` 注解和自定义查询方法实现。以下是详细的配置步骤: 1. 首先,在父实体类中添加一个集合类型的字段,用于存储子实体的列表。例如,如果存在一个用户实体 User 和一个订单实体 Order,一个用户可以有多个订单,则可以在 User 实体中添加一个 List<Order> 类型的字段。 ```java public class User { // 其他字段... @TableField(exist = false) private List<Order> orders; // getter 和 setter 方法... } ``` 2. 在 User 实体类上使用 `@TableName` 注解指定数据库表名,使用 `@TableId` 注解指定主键字段。 ```java @TableName("user") public class User { @TableId("id") private Long id; // 其他字段... @TableField(exist = false) private List<Order> orders; // getter 和 setter 方法... } ``` 3. 在订单实体 Order 中,使用 `@TableField` 注解指定关联的外键字段。假设订单表中有一个外键字段 `user_id` 与 User 表的主键 `id` 关联。 ```java public class Order { @TableField("user_id") private Long userId; // 其他字段... // getter 和 setter 方法... } ``` 4. 在 UserMapper 接口中,编写自定义的查询方法,使用 MyBatis-Plus 的查询构造器来关联查询用户和订单,并将订单列表赋值给用户的 orders 字段。例如,查询某个用户及其关联的订单: ```java public interface UserMapper extends BaseMapper<User> { @Select("SELECT * FROM user WHERE id = #{id}") User selectUserWithOrders(@Param("id") Long id); } ``` 在上述方法中,通过 SQL 查询语句关联查询用户和订单,并使用 `@Select` 注解指定查询语句。使用 `@Param` 注解传递参数,将查询结果赋值给 User 对象。 5. 最后,在业务层调用自定义的查询方法,即可获取用户及其关联的订单信息。 ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User getUserWithOrders(Long id) { return userMapper.selectUserWithOrders(id); } } ``` 通过调用 `getUserWithOrders` 方法,即可获取指定用户及其关联的订单信息。 这样就实现了 MyBatis-Plus一对多关联查询配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值