# 左连接

# 单条件(等于 = )示例:

.leftJoin(UserAddressDO.class, UserAddressDO::getUserId, UserDO::getId) 

对应sql

LEFT JOIN user_address t1 on t1.user_id = t.id

说明:

第一个参数: 参与连表的实体类class
第二个参数: 连表的ON字段,这个属性必须是第一个参数实体类的属性
第三个参数: 参与连表的ON的另一个实体类属性

# 自定义表别名

// LEFT JOIN user_address addr on addr.user_id = t.id
.leftJoin(UserAddressDO.class, "addr", UserAddressDO::getUserId, UserDO::getId)

# 指定其他表别名

// LEFT JOIN user_address addr on addr.user_id = user.id
.leftJoin(UserAddressDO.class, "addr", UserAddressDO::getUserId, "user", UserDO::getId)

比如需要关联同一张表两次及以上时候就需要自定义别名进行区分
别名使用案例

# 多条件示例

.leftJoin(UserAddressDO.class, on -> on
        .eq(UserAddressDO::getUserId,UserDO::getId)
        .eq(UserAddressDO::getId,UserDO::getId))
//自定义别名
.leftJoin(UserAddressDO.class, "addr", on -> on
        .eq(UserAddressDO::getUserId,UserDO::getId)
        .eq(UserAddressDO::getId,UserDO::getId))

对应sql

LEFT JOIN user_address t1 ON (t1.user_id = t.id AND t1.id = t.id)

LEFT JOIN user_address addr ON (addr.user_id = t.id AND addr.id = t.id)

# 多条件字段别名示例

.leftJoin(UserAddressDO.class, "addr", on -> on
        .eq(UserAddressDO::getUserId, "u1", UserDO::getId)
        .eq(UserAddressDO::getId, "u2", UserDO::getId)
        .eq("addr1", UserAddressDO::getId, "u2", UserDO::getId))

对应sql

LEFT JOIN user_address addr ON (t1.user_id = u1.id AND t1.id = u2.id AND addr1.id = u2.id)