在MyBatis中,可以使用@Collection注解來配置Collection類型的屬性。@Collection注解可以用于配置List、Set、Map等類型的屬性。
以下是@Collection注解的用法示例:
public class User {
private Long id;
private List<Role> roles;
// Getter and Setter methods
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List<Role> getRoles() {
return roles;
}
public void setRoles(List<Role> roles) {
this.roles = roles;
}
}
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
@Results({
@Result(property = "id", column = "id"),
@Result(property = "roles", column = "id", javaType = List.class, many = @Many(select = "getUserRoles"))
})
User getUserById(Long id);
@Select("SELECT * FROM role WHERE user_id = #{userId}")
List<Role> getUserRoles(Long userId);
}
在上面的示例中,User類中有一個List類型的roles屬性,使用@Collection注解來配置roles屬性的映射關系。在UserMapper接口中,通過@Results注解配置getUserById方法的返回結果,指定roles屬性使用@Collection注解映射到getUserRoles方法返回的List
通過@Collection注解的配置,可以方便地映射Java對象中的Collection屬性與數據庫表中的相關數據,簡化了開發過程。