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

io.lhysin.mybatis.ddd.provider.QueryByCriteriaProvider Maven / Gradle / Ivy

There is a newer version: 1.1.4-REALESE
Show newest version
package io.lhysin.mybatis.ddd.provider;

import java.io.Serializable;

import org.apache.ibatis.builder.annotation.ProviderContext;
import org.apache.ibatis.builder.annotation.ProviderMethodResolver;
import org.apache.ibatis.jdbc.SQL;

import io.lhysin.mybatis.ddd.spec.Criteria;
import io.lhysin.mybatis.ddd.support.SqlProviderSupport;

/**
 * QueryByCriteriaProvider
 *
 * @param   Table Entity
 * @param   Table PK
 */
public class QueryByCriteriaProvider extends SqlProviderSupport
    implements ProviderMethodResolver {

    /**
     * @param criteria {@link Criteria}
     * @param ctx {@link ProviderContext}
     * @return dynamic SQL
     */
    public String findOne(Criteria criteria, ProviderContext ctx) {
        return new SQL()
            .SELECT(selectColumns(ctx))
            .FROM(tableName(ctx))
            .WHERE(wheresByCriteria(criteria, ctx))
            .ORDER_BY(this.orders(criteria.getSort(), ctx))
            .FETCH_FIRST_ROWS_ONLY(1)
            .toString();
    }

    /**
     * @param criteria {@link Criteria}
     * @param ctx {@link ProviderContext}
     * @return dynamic SQL
     */
    public String findBy(Criteria criteria, ProviderContext ctx) {
        return new SQL()
            .SELECT(selectColumns(ctx))
            .FROM(tableName(ctx))
            .WHERE(wheresByCriteria(criteria, ctx))
            .ORDER_BY(this.orders(criteria.getSort(), ctx))
            .toString();
    }

    /**
     * @param  criteria {@link Criteria}
     * @param ctx {@link ProviderContext}
     * @return dynamic SQL
     */
    public String countBy(Criteria criteria, ProviderContext ctx) {
        return new SQL()
            .SELECT("count(*)")
            .FROM(tableName(ctx))
            .WHERE(wheresByCriteria(criteria, ctx))
            .toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy