mybatis-plus外键注解
时间: 2023-09-26 09:14:44 浏览: 263
MyBatis-Plus提供了三种方式来实现外键关系:
1. @TableField注解:使用此注解来标记外键字段,并且在insert/update语句时会自动将该字段的值设置为关联表的主键值。
2. @TableId注解:使用此注解来标记关联表的主键字段,然后使用@JoinColumn注解来标记外键字段。
3. @JoinColumn注解:使用此注解来标记外键字段,并且使用@OneToOne等注解来标记关联关系。
相关问题
mybatis-plus 外键关联
Mybatis-Plus 支持外键关联的操作,具体实现方式可以分为两种:
1. 通过 `@TableField` 注解指定关联属性,使用 `@TableField(exist = false)` 标识该属性为非数据库字段,然后通过 `@TableField(value = "foreign_key")` 指定关联的外键字段。具体代码如下:
```java
@Data
public class User {
private Long id;
private String name;
private Integer age;
@TableField(value = "dept_id")
private Long deptId;
}
@Data
public class Dept {
private Long id;
private String name;
}
@Mapper
public interface UserMapper extends BaseMapper<User> {
@Select("select u.*, d.name as dept_name from user u left join dept d on u.dept_id = d.id where u.id=#{id}")
User selectUserWithDept(Long id);
}
```
2. 使用 Mybatis-Plus 提供的 `@TableName` 注解的 `excludeProperty` 属性指定不需要插入的属性,然后使用 `@TableId` 注解指定主键,使用 `@TableField` 注解指定外键。具体代码如下:
```java
@Data
@TableName(excludeProperty = "dept")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
@TableField("dept_id")
private Long deptId;
@TableField(exist = false)
private Dept dept;
}
@Data
@TableName("dept")
public class Dept {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
}
@Mapper
public interface UserMapper extends BaseMapper<User> {
@Select("select u.*, d.name as dept_name from user u left join dept d on u.dept_id = d.id where u.id=#{id}")
@Results({
@Result(column = "dept_id", property = "deptId"),
@Result(column = "dept_name", property = "dept.name")
})
User selectUserWithDept(Long id);
}
```
这里使用 `@Results` 注解来指定结果集中的属性映射关系,其中 `column` 指定查询结果中的列名,`property` 指定实体类中的属性名。
详细讲一下Mybatis-plus如何实现外键
Mybatis-plus是一个基于Mybatis的增强工具,它提供了很多方便的功能,如简化了Mybatis的Mapper层代码、自动填充实体类中的公共字段、支持代码生成等。在Mybatis-plus中实现外键有两种方式。
第一种方式是使用注解,Mybatis-plus提供了一些注解来实现关联查询,如@TableName、@TableField、@TableId、@TableLogic等。其中,@TableField注解可以用来配置数据库表外键关系,在这个注解中,有一个strategy属性,可以设置外键映射策略,如IGNORED、NOT_NULL、NOT_EMPTY等,使用这个注解就可以很方便地实现外键的映射关系。
第二种方式是使用Mybatis-plus自带的关联查询功能,Mybatis-plus提供了多种关联查询方式,如左连接、右连接、内连接等,这里我们以左连接为例。首先,需要创建一个实体类A和另一个实体类B,B中存储了A的外键信息。接着,在A的Mapper接口中写一个关联查询方法,使用@LeftJoin注解来配置左连接的相关信息,如映射关系、关联条件等。最后,在Service层或Controller层中调用这个方法,就可以得到A和B的关联查询结果了。
总之,Mybatis-plus实现外键非常的方便,可以根据实际情况选择注解或者关联查询的方式来实现。