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

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

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

import cn.org.atool.fluent.mybatis.base.IEntity;
import cn.org.atool.fluent.mybatis.base.IRefs;
import cn.org.atool.fluent.mybatis.base.mapper.IRichMapper;
import cn.org.atool.fluent.mybatis.base.mapper.QueryExecutor;
import cn.org.atool.fluent.mybatis.segment.WhereBase;
import cn.org.atool.fluent.mybatis.segment.model.WrapperData;

import java.util.function.Function;

import static cn.org.atool.fluent.mybatis.utility.MybatisUtil.assertNotNull;

/**
 * 查询构造器基类
 *
 * @param  实体类型
 * @author wudarui
 */
@SuppressWarnings({"unchecked", "rawtypes"})
public interface IQuery {
    /**
     * distinct 查询
     *
     * @return self
     */
    > Q distinct();

    /**
     * 查询Entity所有字段
     *
     * @return self
     */
    > Q selectAll();

    /**
     * 只查询主键字段
     *
     * @return self
     */
    > Q selectId();

    /**
     * 设置limit值
     *
     * @param limit 最大查询数量
     * @return self
     */
    > Q limit(int limit);

    /**
     * 设置limit值
     *
     * @param start 开始查询偏移量
     * @param limit 最大查询数量
     * @return self
     */
    > Q limit(int start, int limit);

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

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

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

    /**
     * 根据Query定义执行后续操作
     * 
     *   要使用本方法
     *   需要定义 {@link cn.org.atool.fluent.mybatis.spring.MapperFactory} spring bean
     *
     *   same as  {@link #of(IRichMapper)} 方法
     *  
* * @return self */ default QueryExecutor to() { Class entityClass = this.getWrapperData().getEntityClass(); assertNotNull("entity class", entityClass); IRichMapper mapper = IRefs.mapper(entityClass); return new QueryExecutor<>(mapper, this); } /** * 根据Query定义执行后续操作 * * @param mapper 执行操作的mapper * @return QueryExecutor */ default QueryExecutor of(IRichMapper mapper) { return new QueryExecutor<>(mapper, this); } /** * 执行查询操作 * * @param executor 具体查询操作 * @param 结果类型 * @return 结果 * @deprecated replaced by {@link #of(IRichMapper).method(...)} */ @Deprecated default R execute(Function, R> executor) { return executor.apply(this); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy