package xyz.wbsite.dbtool.javafx.po; public class MySQLDBmapper extends AbstractDBmapper { @Override public String getFieldSql(Field field) { StringBuffer sb = new StringBuffer(""); sb.append("`").append(field.getFieldName()).append("` "); String type = field.getFieldType(); if (FieldType.Boolean.name().equals(type)) { sb.append("TINYINT(1)"); } else if (FieldType.Byte.name().equals(type)) { sb.append("TINYINT(3)"); } else if (FieldType.Bytes.name().equals(type)) { sb.append("BLOB"); } else if (FieldType.Character.name().equals(type)) { sb.append("CHAR(1)"); } else if (FieldType.Short.name().equals(type)) { sb.append("SMALLINT(5)"); } else if (FieldType.Integer.name().equals(type)) { sb.append("INTEGER(10)"); } else if (FieldType.Long.name().equals(type)) { sb.append("BIGINT(20)"); } else if (FieldType.Float.name().equals(type)) { sb.append("FLOAT"); } else if (FieldType.Double.name().equals(type)) { sb.append("DOUBLE"); } else if (FieldType.Date.name().equals(type)) { sb.append("DATETIME"); } else if (FieldType.BigDecimal.name().equals(type)) { sb.append("NUMERIC"); } else if (FieldType.Dict.name().equals(type)) { Integer fieldLength = field.getFieldLength(); sb.append("VARCHAR(" + fieldLength + ")"); }else if (FieldType.Select.name().equals(type)) { Integer fieldLength = field.getFieldLength(); sb.append("VARCHAR(" + fieldLength + ")"); } else if (FieldType.String_1.name().equals(type)) { sb.append("CHAR(1)"); } else if (FieldType.String_10.name().equals(type)) { sb.append("CHAR(10)"); } else if (FieldType.String_var.name().equals(type)) { Integer fieldLength = field.getFieldLength(); sb.append("VARCHAR(" + fieldLength + ")"); } else if (FieldType.String_var50.name().equals(type)) { sb.append("VARCHAR(50)"); } else if (FieldType.String_var100.name().equals(type)) { sb.append("VARCHAR(100)"); } else if (FieldType.String_var255.name().equals(type)) { sb.append("VARCHAR(250)"); } else if (FieldType.String_var500.name().equals(type)) { sb.append("VARCHAR(500)"); } else if (FieldType.String_var2500.name().equals(type)) { sb.append("VARCHAR(2500)"); } else if (FieldType.String_var4000.name().equals(type)) { sb.append("VARCHAR(4000)"); } else if (FieldType.String_super.name().equals(type)) { sb.append("TEXT"); } if (!field.getIsSystem() && field.getIsMust() && (field.getDefaultValue() == null || field.getDefaultValue().toUpperCase().equals("NULL"))) { sb.append(" NOT NULL"); } else if (!field.getIsSystem() && field.getIsMust() && field.getDefaultValue() != null && !field.getDefaultValue().toUpperCase().equals("NULL")) { if (field.getFieldType().contains("String")) {//默认字符 sb.append(" NOT NULL").append(" DEFAULT '" + field.getDefaultValue() + "'"); } else {//不是字符就是数字,目前只考虑两张情况 sb.append(" NOT NULL").append(" DEFAULT " + field.getDefaultValue() + ""); } } else if (field.getIsSystem() && field.getFieldName().equals("ID")) { sb.append(" NOT NULL"); } else if (field.getIsSystem() && field.getFieldName().equals("ROW_VERSION")) { sb.append(" NOT NULL").append(" DEFAULT 0"); } else if (field.getIsSystem() && field.getFieldName().equals("IS_DELETED")) { sb.append(" NOT NULL").append(" DEFAULT 0"); } else if (field.getIsSystem() && field.getFieldName().equals("CREATE_BY")) { sb.append(" NOT NULL"); } else if (field.getIsSystem() && field.getFieldName().equals("CREATE_TIME")) { sb.append(" NOT NULL"); } else if (field.getIsSystem() && field.getFieldName().equals("LAST_UPDATE_BY")) { sb.append(" DEFAULT NULL"); } else if (field.getIsSystem() && field.getFieldName().equals("LAST_UPDATE_TIME")) { sb.append(" DEFAULT NULL"); } if (field.getFieldComment() != null) { sb.append(" COMMENT '" + field.getFieldComment() + "'"); } return sb.toString(); } @Override public DataBase getDataBase() { return DataBase.MySQL; } @Override public String getDataBaseType(FieldType type) { if (FieldType.Boolean.name().equals(type.name())) { return "TINYINT"; } else if (FieldType.Byte.name().equals(type.name())) { return "TINYINT"; } else if (FieldType.Bytes.name().equals(type.name())) { return "BLOB"; } else if (FieldType.Character.name().equals(type.name())) { return "VARCHAR"; } else if (FieldType.Short.name().equals(type.name())) { return "SMALLINT"; } else if (FieldType.Integer.name().equals(type.name())) { return "INTEGER"; } else if (FieldType.Long.name().equals(type.name())) { return "NUMERIC"; } else if (FieldType.Float.name().equals(type.name())) { return "REAL"; } else if (FieldType.Double.name().equals(type.name())) { return "FLOAT"; } else if (FieldType.Date.name().equals(type.name())) { return "DATETIME"; } else if (FieldType.BigDecimal.name().equals(type.name())) { return "NUMERIC"; } else if (FieldType.Dict.name().equals(type.name())) { return "VARCHAR"; } else if (FieldType.Select.name().equals(type.name())) { return "VARCHAR"; } else if (FieldType.String_1.name().equals(type.name())) { return "CHAR"; } else if (FieldType.String_10.name().equals(type.name())) { return "CHAR"; } else if (FieldType.String_var.name().equals(type.name())) { return "VARCHAR"; } else if (FieldType.String_var50.name().equals(type.name())) { return "VARCHAR"; } else if (FieldType.String_var100.name().equals(type.name())) { return "VARCHAR"; } else if (FieldType.String_var255.name().equals(type.name())) { return "VARCHAR"; } else if (FieldType.String_var500.name().equals(type.name())) { return "VARCHAR"; } else if (FieldType.String_var2500.name().equals(type.name())) { return "VARCHAR"; } else if (FieldType.String_var4000.name().equals(type.name())) { return "VARCHAR"; } else if (FieldType.String_super.name().equals(type.name())) { return "LONGTEXT"; } else { return ""; } } @Override public String getType(String type, int lenght, int precision, int scale) { if ("bigint".equals(type)) { return FieldType.Long.name(); } else if ("varchar".equals(type) && lenght == 50) { return FieldType.String_var50.name(); } else if ("varchar".equals(type) && lenght == 100) { return FieldType.String_var100.name(); } else if ("varchar".equals(type) && lenght == 255) { return FieldType.String_var255.name(); } else if ("varchar".equals(type) && lenght == 500) { return FieldType.String_var500.name(); } else if ("varchar".equals(type) && lenght == 2500) { return FieldType.String_var2500.name(); } else if ("varchar".equals(type) && lenght == 4000) { return FieldType.String_var4000.name(); } else if ("varchar".equals(type)) { return FieldType.String_var.name(); } else if ("date".equals(type)) { return FieldType.Date.name(); } else if ("datetime".equals(type)) { return FieldType.Date.name(); } else if ("timestamp".equals(type)) { return FieldType.Date.name(); } else if ("char".equals(type) && lenght == 1) { return FieldType.String_1.name(); } else if ("char".equals(type) && lenght == 10) { return FieldType.String_10.name(); } else if ("char".equals(type)) { return FieldType.String_var.name(); } else if ("tinyint".equals(type)) { return FieldType.Integer.name(); } else if ("smallint".equals(type)) { return FieldType.Integer.name(); } else if ("mediumint".equals(type)) { return FieldType.Integer.name(); } else if ("int".equals(type)) { return FieldType.Integer.name(); } else if ("bigint".equals(type)) { return FieldType.Long.name(); } else if ("float".equals(type)) { return FieldType.Float.name(); } else if ("double".equals(type)) { return FieldType.Double.name(); } return FieldType.String_var50.name(); } }