springboot如何使得Room实体类多一个数据表room中没有的属性building_name,通过mapper层从building表中获得
时间: 2024-05-05 22:20:40 浏览: 61
可以通过在Room实体类中添加一个与building_name属性对应的building对象属性来实现。
首先,在Room实体类中添加一个Building对象属性,并在该属性上使用@ManyToOne注解,指定该属性与Building实体类的关联关系:
```java
@Entity
@Table(name = "room")
public class Room {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne
@JoinColumn(name = "building_id")
private Building building;
// getter和setter方法省略
}
```
其中,@JoinColumn注解指定了关联关系在数据库中的实现方式,即通过building_id字段与Building表关联。
然后,在RoomMapper中使用@Results注解指定映射关系,从而将查询结果中的building_name属性映射到Room实体类的building对象中:
```java
@Mapper
public interface RoomMapper {
@Select("SELECT r.*, b.building_name FROM room r INNER JOIN building b ON r.building_id = b.id")
@Results({
@Result(property = "building.buildingName", column = "building_name")
})
List<Room> findAll();
}
```
这样,在查询Room实体类时,会自动查询关联的Building表,并将building_name属性映射到Room实体类的building对象的buildingName属性中。
阅读全文