麻烦给我生成一份能根据表的字段来生成实体映射表的代码
时间: 2023-12-27 19:04:13 浏览: 20
好的,以下是一个示例代码:
```java
import java.util.*;
public class EntityMapperGenerator {
public static void main(String[] args) {
// 定义表名和字段
String tableName = "user";
List<String> columns = Arrays.asList("id", "name", "age", "gender", "phone");
// 生成实体类名
String entityName = generateEntityName(tableName);
// 生成实体类代码
String entityCode = generateEntityCode(entityName, columns);
// 输出生成的代码
System.out.println(entityCode);
}
// 根据表名生成实体类名
private static String generateEntityName(String tableName) {
String[] words = tableName.split("_");
StringBuilder sb = new StringBuilder();
for (String word : words) {
sb.append(word.substring(0, 1).toUpperCase());
sb.append(word.substring(1));
}
return sb.toString();
}
// 根据实体类名和字段生成实体类代码
private static String generateEntityCode(String entityName, List<String> columns) {
StringBuilder sb = new StringBuilder();
// 生成包名和导入语句
sb.append("package com.example.entity;\n\n");
sb.append("import java.util.*;\n\n");
// 生成类定义
sb.append("public class ");
sb.append(entityName);
sb.append(" {\n");
// 生成字段定义
for (String column : columns) {
sb.append(" private ");
sb.append(getFieldType(column));
sb.append(" ");
sb.append(column);
sb.append(";\n");
}
// 生成构造方法
sb.append("\n public ");
sb.append(entityName);
sb.append("(");
for (int i = 0; i < columns.size(); i++) {
sb.append(getFieldType(columns.get(i)));
sb.append(" ");
sb.append(columns.get(i));
if (i < columns.size() - 1) {
sb.append(", ");
}
}
sb.append(") {\n");
for (String column : columns) {
sb.append(" this.");
sb.append(column);
sb.append(" = ");
sb.append(column);
sb.append(";\n");
}
sb.append(" }\n");
// 生成getter和setter方法
for (String column : columns) {
sb.append("\n public ");
sb.append(getFieldType(column));
sb.append(" get");
sb.append(column.substring(0, 1).toUpperCase());
sb.append(column.substring(1));
sb.append("() {\n");
sb.append(" return ");
sb.append(column);
sb.append(";\n");
sb.append(" }\n");
sb.append("\n public void set");
sb.append(column.substring(0, 1).toUpperCase());
sb.append(column.substring(1));
sb.append("(");
sb.append(getFieldType(column));
sb.append(" ");
sb.append(column);
sb.append(") {\n");
sb.append(" this.");
sb.append(column);
sb.append(" = ");
sb.append(column);
sb.append(";\n");
sb.append(" }\n");
}
// 生成类结尾
sb.append("}\n");
return sb.toString();
}
// 根据字段名生成字段类型
private static String getFieldType(String column) {
if (column.equals("id")) {
return "Long";
} else if (column.equals("name")) {
return "String";
} else if (column.equals("age")) {
return "Integer";
} else if (column.equals("gender")) {
return "String";
} else if (column.equals("phone")) {
return "String";
} else {
return "Object";
}
}
}
```
这个示例代码可以根据输入的表名和字段生成一个对应的实体类,包括字段定义、构造方法、getter和setter方法等。您可以根据需要进行修改和扩展。