import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.nio.file.Files;
import java.sql.Timestamp;
import java.util.Date;
/**
* 根据model实体类DO生成建表SQL
* 注意:生成的SQL会有一定出入
* @author zlin
* @date 20200919
*/
public class DoToSqlUtil {
public static void main(String[] args) {
// 1.将本类放在待转换的项目中
// 2.执行前先配置如下信息
// 3.执行此方法
// 需转换为SQL的实体类包路径
String packageName = "com.example.demo.entity";
// 待转换的实体类是否都有int类型自动递增的"id"字段为主键,若配置为true将以id生成自增主键,若配置为false,则转换后的SQL无主键
boolean idKey = false;
// 生成结果sql文路径
String filePath = "../result.sql";
generate(packageName, filePath, idKey);
}
private static void generate(String packageName, String filePath, boolean idKey) {
StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.append("\nSET NAMES utf8mb4;\n").append("SET FOREIGN_KEY_CHECKS = 0;\n");
// 通过包名生成SQL
sqlBuilder.append(generateSql(packageName, idKey));
sqlBuilder.append("\nSET FOREIGN_KEY_CHECKS = 1;\n");
System.out.println(sqlBuilder.toString());
sql2File(sqlBuilder.toString(), filePath);
}
/**
* 根据实体类生成建表语句
*/
private static String generateSql(String packageName, boolean idKey) {
StringBuilder sb = new StringBuilder();
String targetPath = getTargetPathByPackageName(packageName);
File targetDir = new File(targetPath);
if (targetDir.exists()) {
File[] files = targetDir.listFiles();
if (null != files && files.length > 0) {
for (File file : files
根据model实体类DO生成建表SQL
最新推荐文章于 2024-11-28 00:15:00 发布
该博客介绍了一个Java工具类,用于根据指定的实体类包路径自动生成对应的SQL建表语句。工具会检查实体类是否有int类型的'id'字段作为主键,并支持设置自增标识。此外,还提供了将SQL语句写入文件的功能,方便开发者快速创建数据库表结构。


2212

被折叠的 条评论
为什么被折叠?



