package com.hg.ecommerce.dao.support;
import java.util.Collection;
import com.hg.ecommerce.config.ProjectContainer;
/**
* 聚合函数查询,当用到projectedWrapper中的时候,
* 只需要调用SQLWrapper中的selectByProjectedWrapper(projectedWrapper),后面直接跟where()条件语句
* @author JOE
*
*/
public class ProjectedWrapper {
private StringBuilder projection;
private IProjections projecter = ProjectContainer.getInstance(IProjections.class);
private ProjectedWrapper(){
this.projection = new StringBuilder();
}
public static ProjectedWrapper instance(){
return new ProjectedWrapper();
}
//fields
public ProjectedWrapper fields(Object...objects){
projecter.fields(objects);
return this;
}
public ProjectedWrapper fields(Collection<Object> objects){
projecter.fields(objects);
return this;
}
//projections functions; usually be used for select
public ProjectedWrapper AVG(String field,String alias){
projecter.AVG(field, alias);
return this;
}
public ProjectedWrapper COUNT(String alias){
projecter.COUNT(alias);
return this;
}
public ProjectedWrapper COUNT(String field,String alias){
projecter.COUNT(field, alias);
return this;
}
public ProjectedWrapper FIRST(String field,String alias){
projecter.FIRST(field, alias);
return this;
}
public ProjectedWrapper LAST(String field,String alias){
projecter.LAST(field, alias);
return this;
}
public ProjectedWrapper MAX(String field,String alias){
projecter.MAX(field, alias);
return this;
}
public ProjectedWrapper MIN(String field,String alias){
projecter.MIN(field, alias);
return this;
}
public ProjectedWrapper SUM(String field,String alias){
projecter.SUM(field, alias);
return this;
}
public ProjectedWrapper GROUPBY(String field){
projecter.GROUPBY(field);
return this;
}
public ProjectedWrapper UCASE(String field,String alias){
projecter.UCASE(field, alias);
return this;
}
public ProjectedWrapper LCASE(String field,String alias){
projecter.LCASE(field, alias);
return this;
}
public ProjectedWrapper MID(String field,long start,long end,String alias){
projecter.MID(field, start, end, alias);
return this;
}
public ProjectedWrapper LEN(String field,String alias){
projecter.LEN(field, alias);
return this;
}
public ProjectedWrapper ROUND(String field,int decimals,String alias){
projecter.ROUND(field, decimals, alias);
return this;
}
public ProjectedWrapper NOW(String alias){
projecter.NOW(alias);
return this;
}
public ProjectedWrapper FORMAT(String field,String format,String alias){
projecter.FORMAT(field, format, alias);
return this;
}
//only get \ no set
public StringBuilder getProjection() {
return projection;
}
public IProjections getProjecter(){
return projecter;
}
}