java实体类转换为建表语句

点击查看代码
import cn.hutool.core.util.StrUtil;
import lombok.Data;

import java.lang.reflect.Field;
import java.util.Collections;
import java.util.List;

/**
 * @author Administrator
 */
public class Text02 {

    public static void main(String[] args) {
        List<Class<User>> classList = Collections.singletonList(
                User.class
        );
        classList.forEach(Text02::generateTableSql);
    }

    private static void generateTableSql(Class<User> obj) {
        String tableName;
        //获取类名User.class
        tableName = obj.getName();
        //User.class截取
        tableName = tableName.substring(tableName.lastIndexOf(".")+1);
        //驼峰式命名法
        tableName = StrUtil.toUnderlineCase(tableName);
        Field[] fields = obj.getDeclaredFields();
        String column;
        StringBuilder sb = new StringBuilder();
        sb.append("drop table if exists ").append(tableName).append(";\r\n");
        sb.append("\r\n");
        sb.append("create table ").append(tableName).append("(\r\n");
        /*System.out.println(tableName);*/
        for (Field f : fields) {
            column = f.getName();
            Class<?> type = f.getType();
            /*System.out.println(column + ","+type.getSimpleName());*/
            String typeName = type.getTypeName();
            sb.append(StrUtil.toUnderlineCase(column));
            //这里只加了三种int date varchar 想要其他的自己加
            if ("java.lang.Integer".equals(typeName)) {
                sb.append(" int(11) ");
            } else if ("java.util.Date".equals(typeName)) {
                sb.append(" dateTime ");
            } else {
                sb.append(" varchar(255) ");
            }
            if ("id".equals(column)) {
                sb.append(" not null AUTO_INCREMENT ");
            }
            sb.append(",");
            sb.append("\n");
        }
        sb.append(" PRIMARY KEY (`id`)");
        String sql = sb.toString();
        sql = sb.substring(0,sql.length()) + "\n)" + "ENGINE = INNODB DEFAULT CHARSET = utf8mb4";
        System.out.println(sql);
    }
}
@Data
class User {
    private Integer id;

    private String name;

    private String time;

    private String remark;
}

posted @ 2023-03-06 15:10  永久恒心  阅读(448)  评论(0)    收藏  举报