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

com.ecfront.easybi.dbutils.inner.dialect.H2Dialect Maven / Gradle / Ivy

package com.ecfront.easybi.dbutils.inner.dialect;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Objects;

public class H2Dialect implements Dialect {

    @Override
    public String paging(String sql, long pageNumber, long pageSize) throws SQLException {
        return sql + " limit " + pageSize + " offset " + (pageNumber - 1) * pageSize;
    }

    @Override
    public String count(String sql) throws SQLException {
        return "select count(1) from ( " + sql + " ) ";
    }

    @Override
    public String getTableInfo(String tableName) throws SQLException {
        return "SELECT * FROM INFORMATION_SCHEMA.TABLES t where t.table_name ='" + tableName + "'";
    }

    @Override
    public String createTableIfNotExist(String tableName, String tableDesc, Map fields, Map fieldsDesc, List indexFields, List uniqueFields, String pkField) throws SQLException {
        StringBuilder sb = new StringBuilder("CREATE TABLE IF NOT EXISTS " + tableName + " ( ");
        for (Map.Entry field : fields.entrySet()) {
            String f = field.getValue().toLowerCase();
            String t;
            switch (f) {
                case "int":
                case "integer":
                    t = "INT";
                    break;
                case "long":
                    t = "BIGINT";
                    break;
                case "short":
                    t = "SMALLINT";
                    break;
                case "string":
                    t = "VARCHAR(65535)";
                    break;
                case "text":
                    t = "CLOB";
                    break;
                case "bool":
                case "boolean":
                    t = "BOOLEAN";
                    break;
                case "float":
                    t = "FLOAT";
                    break;
                case "double":
                    t = "DOUBLE";
                    break;
                case "char":
                    t = "CHAR";
                    break;
                case "date":
                    t = "TIMESTAMP";
                    break;
                case "uuid":
                    t = "UUID";
                    break;
                case "bigdecimal":
                case "decimal":
                    t = "DECIMAL";
                    break;
                default:
                    throw new SQLException("Not support type:" + f);
            }
            sb.append(field.getKey()).append(" ").append(t).append(" ,");
        }
        if (pkField != null && !Objects.equals(pkField.trim(), "")) {
            return sb.append("primary key(").append(pkField.trim()).append(") )").toString();
        } else {
            return sb.substring(0, sb.length() - 1) + ")";
        }
        //TODO
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy