简单的实现了Hibernate工具自动生成Class文件的功能。
package com.xiva.demo.util; import java.io.File; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Types; import org.apache.commons.io.FileUtils; /** * * <功能简述> <详细描述> * * @author XIVA * @version [1.0, 2013-5-1] * @see [相关类/方法] * @since [产品、模块版本] */ public class GenarateDomainClass { private static Connection conn; private static StringBuffer classString; private static String lineSep = System.getProperty("line.separator"); private static String fileName; static { try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } private static void ininConn() throws SQLException { conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/blogsysdb?useUnicode=true&characterEncoding=utf-8", "blogdb", "blogdb"); } private static String getDataType(int type, int scale) { String dataType = ""; switch (type) { case Types.LONGVARCHAR: // -1 dataType = "Long"; break; case Types.CHAR: // 1 dataType = "Character"; break; case Types.NUMERIC: // 2 switch (scale) { case 0: dataType = "Number"; break; case -127: dataType = "Float"; break; default: dataType = "Number"; } break; case Types.VARCHAR: // 12 dataType = "String"; break; case Types.DATE: // 91 dataType = "Date"; break; case Types.TIMESTAMP: // 93 dataType = "Date"; break; case Types.BLOB: dataType = "Blob"; break; default: dataType = "String"; } return dataType; } private static void queryTable(String tableName) throws SQLException { PreparedStatement preStat = conn.prepareStatement("select * from " + tableName); ResultSet result = preStat.executeQuery(); ResultSetMetaData resultMeta = result.getMetaData(); int colCount = resultMeta.getColumnCount(); String clazzName = convertName(tableName, true); classString.append("public class " + clazzName + " extends BaseEntity {").append(lineSep); fileName = clazzName; for (int i = 1; i <= colCount; i++) { String dbColName = resultMeta.getColumnName(i); String colType = getDataType(resultMeta.getColumnType(i), resultMeta.getScale(i)); String colName = convertName(dbColName, false); if (!dbColName.equals(colName)) { classString.append("@Column(name = \"" + dbColName + "\")").append(lineSep); } classString.append("private " + colType + " " + colName + ";").append(lineSep); } classString.append("}"); } private static String convertName(String dbname, boolean isTable) { StringBuffer className = new StringBuffer(32); String dbNameLow = dbname.toLowerCase(); String[] names = dbNameLow.split("_"); int len = names.length; if (len > 1) { for (int i = 0; i < len; i++) { String name = names[i]; if (i == 0 && !isTable) { className.append(name); continue; } className.append(name.substring(0, 1).toUpperCase()); className.append(name.substring(1)); } } else { className.append(dbNameLow); } return className.toString(); } public static void ininData(String tableName) { classString = new StringBuffer(1024); classString.append("package com.xiva.domain;").append(lineSep); classString.append(lineSep); classString.append("@Entity").append(lineSep); classString.append("@Table(name = \"" + tableName + "\")").append(lineSep); } public static void createFile(String path) { String filePath = path + File.separator + fileName + ".java"; File file = new File(filePath); try { System.out.println(filePath); boolean isCreate = file.createNewFile(); System.out.println(isCreate); FileUtils.write(file, classString, "utf-8"); } catch (IOException e) { e.printStackTrace(); } } /** * * @param args */ public static void main(String[] args) throws SQLException { String tableName = "iv_resource"; String path = "F:\\WorkSpace\\GitProjects\\xivamsys\\src\\com\\xiva\\domain"; ininConn(); ininData(tableName); queryTable(tableName); createFile(path); System.out.println(classString); } }
生成结果如下所示:
package com.xiva.domain; @Entity @Table(name = "iv_function") public class IvFunction extends BaseEntity { @Column(name = "func_id") private String funcId; @Column(name = "func_name") private String funcName; @Column(name = "func_desc") private String funcDesc; }
get set 的生成可以通过ctrl + shift + s快捷生成。导入的类,可以通过Ctrl + shift + o,格式化可以通过Ctrl + shift + f;文件路径可以指定。
相关推荐
总结,通过SpringBoot和MybatisPlus的结合,我们可以方便地从Java实体类生成数据库表结构,无需手动编写SQL脚本。这种方式对于快速构建原型或者在数据丢失后恢复表结构非常有用。在实际应用中,记得对重要数据进行...
《使用Hibernate反向生成数据库表》 在Java后端开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作。利用Hibernate,开发者可以将Java类与数据库表进行映射,使得数据库操作更加面向对象。...
在这个场景中,"spring roo 生成数据库表"指的是使用Spring Roo工具来自动化创建与数据库表对应的Java实体类和数据访问层。 首先,Spring Roo支持多种数据库,包括MySQL、Oracle、PostgreSQL等。在开始之前,你需要...
2. **加载JDBC驱动程序**:通过Class.forName()方法加载对应的数据库驱动程序。 3. **建立数据库连接**:使用DriverManager.getConnection()方法建立与数据库的连接。 4. **执行SQL语句**:创建Statement或...
当应用启动时,Hibernate会根据这些实体类自动创建对应的表,实现了动态生成数据库。 除了实体类,我们还需要创建一个继承自`JpaRepository`的接口,用于与数据库进行交互: ```java import org.springframework....
这个例子中,我们首先使用JDBC连接到MySQL数据库,执行一个查询,然后将查询结果写入一个新的Excel工作表。每个数据库记录对应Excel的一行,每列的数据对应一个单元格。注意,这只是一个基本示例,实际应用中需要...
2. **获取表名和字段信息**:从每个`<class>`标签中提取出表名,并通过JDBC连接查询数据库获取表的字段信息,包括字段名、类型等。 3. **生成模板代码**:根据获取到的表结构,创建POJO类模板。通常,每个字段会...
总结来说,"Oracle根据数据库自动生成JAVA代码"是一个集成开发环境(IDE)或代码生成工具的功能,它利用元数据信息自动生成Java项目的基本架构,包括实体类、DAO、Service、Controller以及前端HTML模板。这种自动化...
本教程将指导你如何使用Eclipse结合MyBatis Generator自动生成带有中文注释的数据库对应实体类。 首先,你需要了解MyBatis Generator(MBG)是一个自动化工具,它可以从数据库中生成Java源代码,包括实体类、Mapper...
标签中的“配置生成页面”可能指的是自动生成数据库查询页面的能力。这可以通过解析数据库表结构,自动生成对应的表单字段和查询逻辑。Spring Data的动态查询功能可以帮助实现这一目标,例如,使用`@Query`注解编写...
1. **加载驱动**:在JSP中,使用`Class.forName()`方法加载对应的数据库驱动。例如,对于MySQL,代码可能是`Class.forName("com.mysql.jdbc.Driver")`。 2. **创建连接**:使用`DriverManager.getConnection()`方法...
本文将深入探讨如何在MyEclipse 2014环境中利用Hibernate 3这一强大的ORM(对象关系映射)框架,生成数据库实体类和XML映射文件。这将帮助开发者有效地将Java对象与数据库表进行绑定,实现数据的透明操作。 首先,...
总结来说,MyBatis逆向工程是一个强大的自动化工具,通过配置"generatorConfig.xml"和运行GeneratorSqlmap,我们可以快速地生成与数据库表对应的Mapper接口、实体类和XML映射文件,大大简化了开发流程,提高了开发...
总结来说,动态加载JDBC Jar包连接数据库并生成压力测试数据文件是一种高效且灵活的方法,它可以帮助我们创建更加真实的压力测试场景,确保应用在高负载下的稳定性和性能。同时,这种方法也有助于提高代码的可维护性...
本主题主要讲解如何利用工具或自定义脚本将MySQL数据表自动生成对应的Java实体类,提高开发效率。 首先,我们需要理解Java实体类的基本概念。在Java世界中,实体类通常用于ORM(对象关系映射)框架,如Hibernate或...
在实际应用中,开发者还可以利用JDBC将数据库数据导出为Excel报表,方便数据分析和报告生成。这通常涉及读取数据库数据,转换为适当的格式,然后写入Excel文件。 总的来说,JDBC是Java开发人员与数据库交互的核心...
在MyBatis中,实体类(Entity Class)是对应数据库表的一对一映射,用于存储和操作数据。 要使用MyBatis在pgsql中自动生成实体类,你需要以下步骤: 1. **安装和配置MyBatis Generator(MBG)**:MBG是MyBatis的一...
总结,通过以上步骤,我们可以利用Hibernate连接到MySQL数据库并根据定义的Java实体类自动生成表结构。这种方式方便了数据库设计和开发流程,尤其是在快速迭代的项目中。在实际开发中,还可以结合其他工具,如IDEA的...
在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效地存入 MySQL 数据库。 首先,要开始使用 POI,你需要在你的项目中引入相应的依赖。如果你使用的是 Maven...
它可以根据数据库中的表结构自动生成对应的Java实体类、Mapper接口及XML配置文件,包括字段的getter和setter方法、CRUD操作等,极大地减少了手动编写这些基础代码的工作量。 在数据库中文注释的场景下,MBG的强大之...