All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.org.atool.fluent.mybatis.base.crud.JoinBuilder Maven / Gradle / Ivy

package cn.org.atool.fluent.mybatis.base.crud;

import cn.org.atool.fluent.mybatis.base.splice.FreeQuery;
import cn.org.atool.fluent.mybatis.segment.JoinQuery;

/**
 * 连接查询构造
 *
 * @author wudarui
 */
@SuppressWarnings({"unchecked", "unused", "rawtypes"})
public interface JoinBuilder> {

    /**
     * 关联查询构造方式一: 使用直接传入设置好别名和参数的Query
     *
     * @param query 查询器
     * @param   左查询类型
     * @return ignore
     */
    static > JoinBuilder1 from(QL query) {
        return new JoinQuery<>(query);
    }

    /**
     * ... from (select query) alias
     *
     * @param query 查询器
     * @param alias 表别名
     * @param   左查询类型
     * @return ignore
     */
    static > JoinBuilder1 from(QL query, String alias) {
        return new JoinQuery<>((QL) new FreeQuery(query, alias));
    }

    /**
     * 显式指定查询字段
     *
     * @param columns 字段列表
     * @return ignore
     */
    JoinBuilder select(String... columns);

    /**
     * distinct
     *
     * @return ignore
     */
    JoinBuilder distinct();

    /**
     * limit 0, limit
     *
     * @param limit limit
     * @return ignore
     */
    JoinBuilder limit(int limit);

    /**
     * limit start, limit
     *
     * @param start from start
     * @param limit limit size
     * @return ignore
     */
    JoinBuilder limit(int start, int limit);

    /**
     * 追加在sql语句的末尾
     * !!!慎用!!!
     * 有sql注入风险
     *
     * @param lastSql 追加的SQL
     * @return ignore
     */
    JoinBuilder last(String lastSql);

    /**
     * 返回IQuery对象
     *
     * @return ignore
     */
    JoinQuery build();

    String[] getAlias();
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy