cn.org.atool.fluent.mybatis.base.crud.JoinToBuilder Maven / Gradle / Ivy
package cn.org.atool.fluent.mybatis.base.crud;
import cn.org.atool.fluent.mybatis.base.free.FreeQuery;
import cn.org.atool.fluent.mybatis.segment.JoinOn;
/**
* 关联查询构造方式一: 使用直接传入设置好别名和参数的Query
*
* @param 查询表一
* @author wudarui
*/
@SuppressWarnings({"unchecked", "unused"})
public interface JoinToBuilder> extends JoinBuilder {
/**
* from left.table join right.table on condition
*
* @param query 关联查询右表及右表条件设置
* @param join right表类型
* @return ignore
*/
> JoinOn> join(QR query);
/**
* from table1 join (select query) alias ...
*
* @param query 子查询
* @param alias 子查询别名
* @param 右查询类型
* @return ignore
*/
default > JoinOn> join(QR query, String alias) {
return this.join((QR) new FreeQuery(query, alias));
}
/**
* from left.table left join right.table on condition
*
* @param query 关联查询右表及右表条件设置
* @param join right 表类型
* @return ignore
*/
> JoinOn> leftJoin(QR query);
/**
* from table1 left join (select query) alias ...
*
* @param query 子查询
* @param alias 子查询别名
* @param 右查询类型
* @return ignore
*/
default > JoinOn> leftJoin(QR query, String alias) {
return this.leftJoin((QR) new FreeQuery(query, alias));
}
/**
* from left.table right join right.table on condition
*
* @param query 关联查询右表及右表条件设置
* @param join right 表类型
* @return ignore
*/
> JoinOn> rightJoin(QR query);
/**
* from table1 right join (select query) alias ...
*
* @param query 子查询
* @param alias 子查询别名
* @param 右查询类型
* @return ignore
*/
default > JoinOn> rightJoin(QR query, String alias) {
return this.rightJoin((QR) new FreeQuery(query, alias));
}
}