当前位置: 首页 > news >正文

以前在线做预算的网站广告设计网站免费

以前在线做预算的网站,广告设计网站免费,南通制作网页多少钱,网站做301跳转的作用在这篇博客中,我分享了如何通过 Java 和 JDBC 自动生成数据库实体类的过程。通常,手动编写实体类代码既繁琐又容易出错,尤其是在数据库表结构发生变化时,手动更新代码的工作量非常大。为了提高开发效率,我利用 JDBC 连…

在这篇博客中,我分享了如何通过 Java 和 JDBC 自动生成数据库实体类的过程。通常,手动编写实体类代码既繁琐又容易出错,尤其是在数据库表结构发生变化时,手动更新代码的工作量非常大。为了提高开发效率,我利用 JDBC 连接到数据库,通过 DatabaseMetaData 获取表的元数据,自动化获取表的字段信息(如列名、列类型和列注释)。接着,将数据库中的字段名转换为 Java 的驼峰命名法,并根据字段的类型生成合适的 Java 类型(如 String, Long, Integer 等)。此外,我还将数据库字段的注释转化为 Java 类的 Javadoc 注释,使得生成的实体类更加易于理解和维护。生成的实体类会被保存到指定的包路径中,确保项目结构的整洁。通过这种方式,我们能够轻松地为数据库中的每一张表生成相应的实体类,避免了手动编写实体类的繁琐过程,提高了开发效率,也保证了代码的一致性。文章中还提供了完整的代码示例,方便大家理解并应用到自己的项目中。

public class EntityGenerator {

    public static void main(String[] args) {String dbUrl = "jdbc:mysql://:/?useUnicode=true&characterEncoding=utf-8";String dbUsername = "";String dbPassword = "";
//        List<String> tableNames = Arrays.asList("kdb_store_profile_info", "kdb_task_factor");  // 要生成实体类的表名List<String> tableNames = Arrays.asList();  // 为空生成该数据库下所有表结构String packageName = "com.***.base";  // 生成实体类的包名generateEntityClasses(dbUrl, dbUsername, dbPassword, tableNames, packageName);}public static void generateEntityClasses(String dbUrl, String dbUsername, String dbPassword, List<String> tableNames, String packageName) {try (Connection connection = DriverManager.getConnection(dbUrl, dbUsername, dbPassword)) {// 获取数据库元数据DatabaseMetaData metaData = connection.getMetaData();// 如果tableNames为空,获取数据库 "ymkdb" 中的所有表if (tableNames == null || tableNames.isEmpty()) {tableNames = getTableNamesFromDatabase(metaData, "ymkdb");}// 生成每个表的实体类int generatedTableCount = 0;for (String tableName : tableNames) {generateEntityClass(metaData, tableName, packageName);generatedTableCount++;}// 打印日志,显示总共生成了多少张表System.out.println("总共生成了 " + generatedTableCount + " 张表的实体类。");} catch (SQLException | IOException e) {e.printStackTrace();}
}// 获取 "ymkdb" 数据库中的所有表名
private static List<String> getTableNamesFromDatabase(DatabaseMetaData metaData, String databaseName) throws SQLException {List<String> tableNames = new ArrayList<>();ResultSet resultSet = metaData.getTables(databaseName, null, null, new String[] { "TABLE" });while (resultSet.next()) {String tableName = resultSet.getString("TABLE_NAME");tableNames.add(tableName);}return tableNames;
}// 根据表名生成实体类
public static void generateEntityClass(DatabaseMetaData metaData, String tableName, String packageName) throws SQLException, IOException {ResultSet columns = metaData.getColumns(null, null, tableName, null);// 获取表的注释String tableComment = getTableComment(metaData, tableName);StringBuilder classContent = new StringBuilder();//        // 类名转换为首字母大写String className = toClassName(tableName);// 包名和类名classContent.append("package ").append(packageName).append(";\n\n");// 导入语句classContent.append("import lombok.Data;\n");classContent.append("import java.io.Serializable;\n");classContent.append("import java.util.Date;\n\n");// 类定义前添加表名的注释classContent.append("/**\n").append(" * ").append(tableComment != null ? tableComment : tableName).append("\n").append(" */\n");// 类注解和定义classContent.append("@Data\n");classContent.append("public class ").append(className).append(" implements Serializable {\n");// 读取表字段信息while (columns.next()) {String columnName = columns.getString("COLUMN_NAME");String columnType = columns.getString("TYPE_NAME");String columnComment = columns.getString("REMARKS");  // 获取字段的注释// 将数据库字段名转换为驼峰式命名String fieldName = toCamelCase(columnName);String fieldType = getJavaType(columnType);// 添加字段声明classContent.append("\n    /**\n").append("     * ").append(columnComment != null ? columnComment : columnName).append("\n").append("     */\n").append("    private ").append(fieldType).append(" ").append(fieldName).append(";\n");}// 结束类定义classContent.append("\n}");// 保存文件String filePath = "src/main/java/" + packageName.replace('.', '/') + "/" + className + ".java";File file = new File(filePath);file.getParentFile().mkdirs();try (FileWriter writer = new FileWriter(file)) {writer.write(classContent.toString());System.out.println("Java 文件生成成功: " + filePath);}
}// 获取表的注释
private static String getTableComment(DatabaseMetaData metaData, String tableName) throws SQLException {ResultSet resultSet = metaData.getTables(null, null, tableName, new String[] { "TABLE" });if (resultSet.next()) {return resultSet.getString("REMARKS");}return null;  // 默认返回null
}// 将数据库字段名转换为驼峰命名
private static String toCamelCase(String columnName) {StringBuilder camelCaseString = new StringBuilder();String[] parts = columnName.split("_");for (String part : parts) {if (camelCaseString.length() == 0) {camelCaseString.append(part.toLowerCase());} else {camelCaseString.append(part.substring(0, 1).toUpperCase()).append(part.substring(1).toLowerCase());}}return camelCaseString.toString();
}// 将表名转换为类名
private static String toClassName(String tableName) {StringBuilder className = new StringBuilder();String[] parts = tableName.split("_");for (String part : parts) {className.append(part.substring(0, 1).toUpperCase()).append(part.substring(1).toLowerCase());}return className.toString();
}// 根据数据库字段类型映射到 Java 类型
private static String getJavaType(String sqlType) {switch (sqlType) {case "BIGINT":return "Long";case "VARCHAR":return "String";case "TINYINT":return "Integer";case "INT":return "Integer";case "DATETIME":return "Date";default:return "String";  // 默认返回 String 类型}
}

}

http://www.yayakq.cn/news/399253/

相关文章:

  • 哔哩哔哩网页版官网在线观看淄博seo服务
  • 网站建设价格济南网站建设a2345
  • 网站实名认证查询申请表做境外域名网站
  • 有没有代做ppt的网站织梦网站主页底
  • 网站开发课设wordpress数据库里的主题痕迹
  • 深圳比较好的网站建设公司wordpress 重新生成
  • 本公司经营网站建设硬件开发流程图
  • 网站建设和技术服务合同范本做网站时间
  • 多个域名绑定同一网站做资讯网站要什么手续
  • 做网站一定要有空间吗瑞安app开发公司
  • 无锡做智能网站青岛专门做网站的公司
  • 婚纱摄影网站模板源码网站建设制作设计
  • wordpress网站的跳出率很低网站邮件推送
  • 昆山普立斯特做的有网站汕头网站快速优化排名
  • 潍坊中脉网站建设wordpress 忘记用户名
  • 情感视频素材网站做首页网站成品
  • 光谷中心城建设投资有限公司网站西安做网络推广的
  • dede自定义网站地图php怎么建立网站
  • 专业网站运营设计wordpress调用指定分类的文章
  • 做免费网站怎么赚钱的北大青鸟网站开发
  • 北京做网站公司排名盱眙有做公司网站的吗
  • 无锡网站建设无锡seo公司哪家好用
  • 四川网站建设 招标别人做的网站怎么seo优化
  • 南宁建站服务h5网站建设
  • 丽水市住房和城建建设局网站广州黄埔做网站公司
  • 哪里有html5网站建设做中英文网站公司
  • 怎么更新电脑的wordpress无忧网站优化
  • 专注吴中网站建设推广源码库官网
  • 毕业设计网站设计说明书2020事件营销成功案例
  • 网站开发设计实训 报告wordpress设计类网站