Mybatis使用注解方式多表one-to-one对应查询
2018-12-20 本文已影响0人
小鱼儿2020
oauth_user的Entity类内增加
@TableField(exist = false)
private OauthOrganization oauthOrganization;
get...set略过
one=@One方式,此方式的优点是写法简单,不需要去一一对应B表Result,缺点是发送了n+1次sql查询(n为A表的查询结果的数量)
@Select("SELECT * FROM `oauth_user`")
@Results({
@Result(property ="oauthOrganization",column="organizationid",
one =@One(select ="com.qfclo.login.mapper.OauthOrganizationMapper.selectById"))}
)
List<OauthUser> selectallwithorg();
left join方式
@Select("SELECT A.*,B.name as oname FROM `oauth_user` A LEFT JOIN `oauth_organization` B ON A.organizationid = B.id")
@Results({
@Result(property ="oauthOrganization.name",column="oname")}
)
List<OauthUser> selectallwithorg1();
此方式优点是可以指定B表仅查询某几个字段,此查询仅发送一次查询请求,效率高于第一种方式,缺点是此方式必须指定B表的Result字段的对应方式。