@One联查(一对一)
一个用户拥有一个所在公司信息。
User类
public class User {
Integer id;
String userName;
String email;
Company company;
}
Company类
public class Company {
Integer id;
String companyName;
}
CompanyDao
public interface CompanyDao {
@Select("select * from company where id = #{id}")
Company findCompanyById(Integer id);
}
UserDao 联查User表与Company表
使用@Results配置结果集,使用@Result配置某一个数据库字段与实体类属性之间的关系。
@Result映射属性与字段之间的关系,property是类中的属性,column是数据库中的字段,one表示获取关联关系中【一】的一方。
public interface UserDao {
@Select("select * from user")
@Results(
@Result(property = "company",
column = "id",
one = @One(select = "com.sample.dao.CompanyDao.findCompanyById")))
List<User> findUserWithCompany();
}
@Many联查(一对多)
一个公司Company有多个员工(用户User)。
UserDao类
@Select("select * from user where companyId = #{companyId}")
List<User> findUserByCompanyId(Integer companyId);
CompanyDao类
@Select("SELECT * FROM company WHERE id=#{id}")
@Results(value = {
@Result(property = "id", column = "id"),
@Result(property = "companyName", column = "companyName"),
@Result(property = "users", column = "id",
many = @Many(select = "com.sample.dao.UserDao.findUserByCompanyId"))})
Company findCompanyWithUserById_v2(Integer id);