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

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

There is a newer version: 1.9.9
Show newest version
package cn.org.atool.fluent.mybatis.base.crud;

import cn.org.atool.fluent.mybatis.base.IEntity;
import cn.org.atool.fluent.mybatis.base.entity.IMapping;
import cn.org.atool.fluent.mybatis.segment.WhereBase;
import cn.org.atool.fluent.mybatis.segment.fragment.IFragment;
import cn.org.atool.fluent.mybatis.segment.model.HintType;
import cn.org.atool.fluent.mybatis.segment.model.WrapperData;

import java.io.Serializable;
import java.util.List;
import java.util.Optional;

import static cn.org.atool.fluent.mybatis.utility.StrConstant.EMPTY;

/**
 * IWrapper: 查询和更新都用到的接口
 *
 * @param   对应的实体类
 * @param   最终查询器或更新器
 * @param  对应的嵌套查询器
 * @author darui.wu
 */
@SuppressWarnings({"unchecked"})
public interface IWrapper<
    E extends IEntity,
    W extends IWrapper,
    NQ extends IBaseQuery>
    extends Serializable {

    /**
     * 返回where
     *
     * @return WhereBase
     */
    WhereBase where();

    /**
     * 返回查询器或更新器对应的xml数据
     * 系统方法, 请勿调用
     *
     * @return WrapperData
     */
    WrapperData data();

    /**
     * 在select或update指定位置插入hint语句
     *
     * @param type 指定位置
     * @param hint hint语句
     * @return W
     */
    default W hint(HintType type, String hint) {
        this.data().hint(type, hint);
        return (W) this;
    }

    /**
     * 在select或update开头插入hint语句
     *
     * @param hint hint语句
     * @return W
     */
    default W hint(String hint) {
        return this.hint(HintType.Before_All, hint);
    }

    /**
     * query/update表别名
     *
     * @return 表别名
     */
    default String getTableAlias() {
        return EMPTY;
    }

    /**
     * query/update表名
     *
     * @param notFoundError 未找到表名时, 是否抛出异常
     * @return ISqlSegment
     */
    IFragment table(boolean notFoundError);

    /**
     * 数据库映射定义
     *
     * @return Optional
     */
    Optional mapping();

    List allFields();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy