package cn.create.cbl.core.utils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.commons.lang3.StringUtils;
import cn.create.cbl.core.exception.AppException;
import cn.create.cbl.core.global.Constants;
import cn.create.cbl.core.global.ResultCode;
public class SQLQueryUtil extends BaseUtil {
private static final long serialVersionUID = -4008847394285279230L;
private static String USE_JDBC_DRIVER = Constants.getConfig("jdbc.driverClassName");
/**
* main()
*
* @param args
*/
public static void main(String[] args) {
SQLQueryUtil util = new SQLQueryUtil();
util.addTable("base_user");
util.addTable("base_group");
util.addColumn("user_name");
util.addColumn("user_age");
util.addAndCondition("id", RelationalOperators.EQ, "xxxx", ValueType.STRING);
util.addAndInCondition("user_age", "'x','x','x','x','x'");
util.addOrLikeCondition("xxx", "yyyy");
util.addGroupBy("user_name");
util.addAscOrderBy("create_time");
util.addDescOrderBy("id");
System.out.println(util.toSQL());
}
/**
* 日期格式化字符串 如:2013-06-20
*/
public static final String FMT_DATE = "yyyy-MM-dd";
/**
* 时间格式化字符串 如:13:01:01
*/
public static final String FMT_TIME = "HH:mm:ss";
/**
* 日期时间格式化字符串 如:2013-06-20 13:01:01
*/
public static final String FMT_DATETIME = "yyyy-MM-dd HH:mm:ss";
/**
* 逻辑运算
*
* @author Vity
*
*/
public enum LogicalOperators {
AND("AND"), OR("OR");
private String value;
private LogicalOperators(String value) {
this.value = value;
}
public String toString() {
return new String(this.value);
}
}
/**
* 关系运算
*
*
* EQ("="), NE("<>"), GT(">"), GE(">="), LT("
*
*
* @author Vity
*
*/
public enum RelationalOperators {
EQ("="), NE("<>"), GT(">"), GE(">="), LT("
private String value;
private RelationalOperators(String value) {
this.value = value;
}
public String toString() {
return this.value;
}
}
/**
* 排序方式
*
* @author Vity
*
*/
public enum SortMethod {
ASC("ASC"), DESC("DESC");
private String value;
private SortMethod(String value) {
this.value = value;
}
public String toString() {
return this.value;
}
}
/**
* 值类型
*
* @author Vity
*
*/
public enum ValueType {
NUMBER, DATE, STRING, TIME, DATETIME
}
/**
* 内置表别名前缀
*/
private fin