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字段的对应方式。

上一篇 下一篇

猜你喜欢

热点阅读