创建了一天的MySQL数据表,然后觉得手动太慢了,又累,所以自己写了一个方法,可以通过Java实体类创建MySQL数据表,可以减少开发的时间,代码很简单,大家想用也可以根据自己的实际使用情况进行更改。
传入一个class对象,跟表名就可以生成数据库的创建表语句了
import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Date; public class EntityToTableDDLUtil { public static String generateCreateTableDDL(Class<?> clazz, String tableName) { StringBuilder sb = new StringBuilder(); sb.append("CREATE TABLE ").append(tableName).append(" ("); List<String> columnList = new ArrayList<>(); Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { String fieldName = field.getName(); Class<?> fieldType = field.getType(); String columnType = getColumnDataType(fieldType); String columnDefinition = fieldName + " " + columnType; if (fieldName.equals("id")) { columnDefinition += " PRIMARY KEY AUTO_INCREMENT"; } columnList.add(columnDefinition); } sb.append(String.join(", ", columnList)); sb.append(");"); return sb.toString(); } private static String getColumnDataType(Class<?> fieldType) { if (fieldType == int.class || fieldType == Integer.class) { return "INT"; } else if (fieldType == long.class || fieldType == Long.class) { return "BIGINT"; } else if (fieldType == float.class || fieldType == Float.class) { return "FLOAT"; } else if (fieldType == double.class || fieldType == Double.class) { return "DOUBLE"; } else if (fieldType == boolean.class || fieldType == Boolean.class) { return "TINYINT(1)"; } else if (fieldType == String.class) { return "VARCHAR(255)"; } else if (fieldType == Date.class){ return "datatime"; } // Add more data types as needed throw new IllegalArgumentException("Unsupported field type: " + fieldType); } }