DaoConst.java 8.68 KB
package com.yanzuoguang.dao;

import com.yanzuoguang.util.YzgError;
import com.yanzuoguang.util.helper.StringHelper;

/**
 * DAO层处理基本美剧
 *
 * @author 颜佐光
 */
public class DaoConst {
    /**
     * 创建操作
     */
    public static final int OPERATOR_TYPE_CREATE = 0;
    /**
     * 更新操作
     */
    public static final int OPERATOR_TYPE_UPDATE = 1;
    /**
     * 删除操作
     */
    public static final int OPERATOR_TYPE_REMOVE = 2;
    /**
     * 加载操作
     */
    public static final int OPERATOR_TYPE_LOAD = 3;
    /**
     * 主键存在则修改,否则创建
     */
    public static final String REPLACE = "replace";
    /**
     * 创建
     */
    public static final String CREATE = "create";
    /**
     * 修改
     */
    public static final String UPDATE = "update";
    /**
     * 删除
     */
    public static final String REMOVE = "remove";
    /**
     * 加载
     */
    public static final String LOAD = "load";
    /**
     * 查询
     */
    public static final String QUERY = "query";

    /**
     * GROUP增加数据的SQL语句
     */
    public static final String GROUP_ADD = "GroupAdd";

    /**
     * GROUP查询数据的SQL语句
     */
    public static final String GROUP_QUERY = "GroupQuery";

    /**
     * 根据某个字段保存
     */
    public static final String SAVE_WITH = "SaveWith";

    /**
     * 驼峰式命名
     */
    public static final int ROW_NAME_TYPE_CAMEL_CASE = 0;
    /**
     * 原字段
     */
    public static final int ROW_NAME_TYPE_NO_CHANGE = 1;
    /**
     * 主键自增为0
     */
    public static final String ZERO = "0";
    /**
     * 单位地址
     */
    public static final int CODE_UNIT = 2;

    /**
     * 插入SQL语句模板
     */
    public static final String SQL_REPLACE = "REPLACE INTO {TABLE}({FIELD}) VALUES({VALUES})";
    /**
     * 插入SQL语句模板
     */
    public static final String SQL_INSERT = "INSERT INTO {TABLE}({FIELD}) VALUES({VALUES})";
    /**
     * 更新SQL语句模板
     */
    public static final String SQL_UPDATE = "UPDATE {TABLE} AS a {INNER} SET {FIELD} WHERE 1=1 {WHERE}";
    /**
     * 删除SQL语句模板
     */
    public static final String SQL_REMOVE = "DELETE a FROM {TABLE} AS a {INNER} WHERE 1=1 {WHERE}";
    /**
     * 加载SQL语句模板
     */
    public static final String SQL_LOAD = "{SELECT_OUTER_BEGIN}SELECT {FIELD} FROM {TABLE} AS a {INNER} WHERE 1=1" +
            "{WHERE}{GROUP}{HAVING}{ORDER}{LIMIT}{SELECT_OUTER_END}{INNER_OUTER}{WHERE_OUTER}{GROUP_OUTER}{HAVING_OUTER}{ORDER_OUTER}{LIMIT_OUTER}";

    public static final String SQL_LIST_FROM = "^[\\s\\S]+?VALUES\\s*?\\(";
    public static final String SQL_LIST_TO = ",(";
    /**
     * SQL加载
     */
    public static final String CODE_FIELD_DEFAULT = "a.*";
    /**
     * SQL加载
     */
    public static final String CODE_FIELD_DEFAULT_NAME = "CODE_FIELD_DEFAULT_NAME";
    /**
     * 值代码片段
     */
    public static final String CODE_TABLE = "{TABLE}";
    public static final String CODE_FIELD = "{FIELD}";
    public static final String CODE_VALUES = "{VALUES}";
    public static final String CODE_WHERE = "{WHERE}";
    public static final String CODE_INNER = "{INNER}";
    public static final String CODE_ORDER = "{ORDER}";
    public static final String CODE_GROUP = "{GROUP}";
    public static final String CODE_LIMIT = "{LIMIT}";
    public static final String CODE_LIMIT_OUTER = "{LIMIT_OUTER}";
    /**
     * 更新字段模板
     */
    public static final String CODE_UPDATE_FIELD = "a.%s=%s";
    /**
     * 更新字段模板主键
     */
    public static final String CODE_UPDATE_PRIMARY = "a.%s=a.%s";
    /**
     * 更新字段模板参数
     */
    public static final String CODE_UPDATE_FIELD_PARA = ",a.%s=?";
    /**
     * 更新字段模板参数
     */
    public static final String CODE_UPDATE_FIELD_REMOVE = "a.%s=1";
    /**
     * 等于条件
     */
    public static final String CODE_WHERE_EQUALS = "AND %s%s=%s";
    /**
     * In条件参数
     */
    public static final String CODE_WHERE_IN = "AND %s%s IN (%s)";
    /**
     * 等于条件参数
     */
    public static final String CODE_WHERE_EQUALS_PARA = "AND a.%s=?";
    /**
     * In条件参数
     */
    public static final String CODE_WHERE_IN_PARA = "AND a.%s IN (?)";
    /**
     * In条件结尾
     */
    public static final String CODE_WHERE_IN_END = "s";
    /**
     * In条件结尾_es
     */
    public static final String CODE_WHERE_IN_END_ES = "es";
    /**
     * 等于条件参数
     */
    public static final String CODE_WHERE_EQUALS_NOT_EMPTY_PARA = "AND a.%s=? AND ?>'' ";
    /**
     * 未删除条件
     */
    public static final String CODE_WHERE_EQUALS_NOT_REMOVE = "AND a.%s=0";
    /**
     * 版本好字段
     */
    public static final String CODE_UPDATE_VERSION_FIELD = ",a.%s=1+a.%s";
    /**
     * 不等于条件
     */
    public static final String CODE_WHERE_NOT_EQUALS = "AND %s%s<>%s";
    /**
     * 不等于条件
     */
    public static final String CODE_WHERE_NOT_EQUALS_PARA = "AND a.%s<>?";
    /**
     * 默认表标记
     */
    public static final String CODE_TAG = "a.";
    /**
     * 参数标记
     */
    public static final String CODE_PARA = "?";
    /**
     * 增加修改语句的分割符号
     */
    public static final String CODE_SPLIT = ",";
    /**
     * 统计语句增加字段模板
     */
    public static final String CODE_GROUP_ADD = "a.{FIELD}=a.{FIELD}+?";
    /**
     * 版本号字段名称
     */
    public static final String VERSION_FLAG = "version";
    /**
     * 删除字段名称
     */
    public static final String REMOVE_FLAG = "remove";
    /**
     * 创建字段名称
     */
    public static final String CREATE_FLAG = "create";
    /**
     * 更新字段名称
     */
    public static final String UPDATE_FLAG = "update";
    /**
     * MD5标记字段
     */
    public static final String MD5_KEY_FLAG = "md5key";
    /**
     * 删除字符串长度变量
     */
    public static final String REMOVE_FLAG_INPUT = "remove_input";
    /**
     * ID字段
     */
    public static final String ID_FIELD = "id";
    /**
     * 集合初始化大小
     */
    public static final int COLLECTION_INIT_SIZE = 15;
    /**
     * 查询条件默认代码片段
     */
    public static final String[] LAST_AUTO_ADD = new String[]{"{WHERE}", "{GROUP}", "{HAVING}", "{ORDER}", "{LIMIT}"};

    /**
     * 普通字段
     */
    public static final int FIELD_NONE = -1;
    /**
     * 普通字段
     */
    public static final int FIELD_COMMON = 0;
    /**
     * 删除标记
     */
    public static final int FIELD_REMOVE = 1;
    /**
     * 版本号字段
     */
    public static final int FIELD_VERSION = 2;
    /**
     * 主键字段
     */
    public static final int FIELD_PRIMARY = 3;
    /**
     * MD5标记字段,用于统计字段
     */
    public static final int FIELD_MD5 = 4;
    /**
     * 删除时记录操作状态的字段
     */
    public static final int FIELD_REMOVE_UPDATE = 5;
    /**
     * 删除时记录操作状态的字段
     */
    public static final int FIELD_CREATE = 6;
    /**
     * 根据字段保存
     */
    public static final int FIELD_SAVE_WITH = 7;
    /**
     * 根据字段添加统计
     */
    public static final int FIELD_ADD_GROUP = 8;
    /**
     * 根据字段替换统计
     */
    public static final int FIELD_REPLACE_GROUP = 9;

    /**
     * SQL语句类型-普通语句
     */
    public static final int SQL_TYPE_COMMON = 0;
    /**
     * SQL语句类型-创建语句
     */
    public static final int SQL_TYPE_CREATE = 1;
    /**
     * SQL语句类型-更新语句
     */
    public static final int SQL_TYPE_UPDATE = 2;

    /**
     * SQL语句类型-删除语句
     */
    public static final int SQL_TYPE_REMOVE = 3;

    /**
     * SQL语句类型-加载语句
     */
    public static final int SQL_TYPE_LOAD = 4;
    /**
     * SQL语句类型-是否存在
     */
    public static final int SQL_TYPE_EXISTS = 5;
    /**
     * SQL语句类型-根据字段保存
     */
    public static final int SQL_TYPE_SAVE_WITH = 6;
    /**
     * SQL语句类型-添加统计
     */
    public static final int SQL_TYPE_ADD_GROUP = 7;

    /**
     * 获取数组参数名称
     *
     * @param name
     * @return
     */
    public static String getArrayParameterName(String name) {
        if (StringHelper.isEmpty(name)) {
            throw YzgError.getRuntimeException("060");
        }
        String lName = name.toLowerCase();
        if (lName.endsWith(DaoConst.CODE_WHERE_IN_END)) {
            return name + DaoConst.CODE_WHERE_IN_END_ES;
        } else {
            return name + DaoConst.CODE_WHERE_IN_END;
        }
    }
}