import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.output.XMLOutputter; publicclass getDBStructure { /** * @param args * @throws SQLException * @throws ClassNotFoundException */ publicstaticvoid main(String[] args)throws SQLException, ClassNotFoundException { //TODO Auto-generated method stub DataBaseUtil db = new DataBaseUtil(); DatabaseMetaData dbmt; dbmt = db.getConn().getMetaData(); Statement st = db.getConn().createStatement(); ResultSet tableSet = dbmt.getTables(null,"%", "%",new String[]{"TABLE"}); Element root = new Element("POSTGIS_DB_XML"); root.setAttribute("VERSION","1.0"); Document Doc = new Document(root); Element elements = new Element("Tables"); Element elementtable =null; while (tableSet.next()){ String tableName = tableSet.getString(3);//获取数据库中表名称 elementtable = new Element("table"); elementtable.setAttribute("tableName",tableName ); ResultSet columnSet = dbmt.getColumns(null,"%", tableName,"%"); ResultSetMetaData rsmd = columnSet.getMetaData(); intnumberOfColumns = rsmd.getColumnCount();//表中列个数 Element elementcolumn =null; while(columnSet.next()){ String columnName = columnSet.getString("COLUMN_NAME");//获取列名称 String TYPE_NAME = columnSet.getString("TYPE_NAME");//列字段类型 elementcolumn = new Element("column"); elementcolumn.setAttribute("columnName", columnName); elementcolumn.setAttribute("TYPE_NAME", TYPE_NAME); elementtable.addContent(elementcolumn); } elements.addContent(elementtable); } root.addContent(elements); XMLOutputter XMLOut = new XMLOutputter(); String xml = XMLOut.outputString(Doc); System.out.println(xml); } }
在这里依赖一个类DatabaseMetaData,这个对象可以从数据库连接来获取。有了它万事大吉了,想知道什么问它即可:
//获取所有表
ResultSet tableSet = databaseMetaData.getTables(null, "%", "%", new String[]{"TABLE"});
//获取所有列
ResultSet columnSet = dbmt.getColumns(null,"%", tableName,"%");
//获取列个数
intnumberOfColumns = rsmd.getColumnCount();
下面就是如何从数据库读取表信息了。
引入 jdom2的相关JAR文件,数据库自己选择(这里我用的是PostgreSQL数据库)
//数据库连接
publicclass DataBaseUtil { privatestatic Connectionconn =null; @SuppressWarnings("unchecked") publicstatic Connection getConn()throws ClassNotFoundException, SQLException { if (conn==null) { Class.forName("org.postgresql.Driver"); String url = "jdbc:postgresql://localhost:5432/postgis" ; conn = DriverManager.getConnection(url,"postgres" , "12345" ); } returnconn; } }
//生成XML格式
相关推荐
Java提供了DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)等API来解析和生成XML文档。DOM将整个XML文档加载到内存中,便于随机访问;SAX是事件驱动的,逐行读取XML,节省...
在本项目中,我们主要探讨的是如何利用SpringBoot框架结合Mybatis来操作PostgreSQL数据库,进行CRUD(创建、读取、更新、删除)等基本数据操作。下面将详细介绍涉及的关键知识点。 1. **SpringBoot**: SpringBoot...
本文将详细讲解如何生成XML文件以及如何将XML文件导入到数据库中,并介绍压缩XML文件的相关方法。 一、生成XML文件 1. **手动创建XML文件** 可以使用任何文本编辑器,如Notepad++或Visual Studio Code,创建一个...
而"Postgre自动生成代码"指的是利用特定的工具或框架,自动化生成与PostgreSQL数据库相关的Java代码,如MyBatis的XML配置、DAO层、Service层以及DTO对象,以减少手动编写这些重复性工作的时间和出错概率。...
1. **安装和配置MyBatis Generator(MBG)**:MBG是MyBatis的一个插件,它可以自动根据数据库表结构生成Java实体类、Mapper接口和XML配置文件。首先,你需要在项目中添加MBG的依赖,通常是在Maven或Gradle的配置文件...
在Java编程中,PostgreSQL JDBC驱动是连接Java应用程序与PostgreSQL数据库的关键组件。这个源代码包包含了版本0.9.2的PostgreSQL JDBC驱动,它允许开发者通过JDBC API与PostgreSQL数据库进行交互。下面我们将详细...
总结来说,MyBatis Generator逆向工程是自动化生成MyBatis相关代码的过程,通过配置文件连接到PostgreSQL数据库,解析表结构并生成对应的Java类。这个过程大大简化了数据库操作的编码工作,提升了开发效率。通过阅读...
8. PostgreSQL实用实例参考:虽然这个问题主要涉及XML和Excel的处理,但如果你的数据存储在PostgreSQL数据库中,你可以先使用JDBC连接到数据库,执行查询,然后将结果转换为XML,再按照上述步骤写入Excel。...
MBG的配置文件是XML格式的,其中包含了数据库连接信息、生成的目标位置、生成的代码风格等设置。配置文件中的主要元素包括`context`、`table`等,`context`用于定义数据库连接,`table`则指定需要生成代码的表。 三...
`dbjars`可能包含的是数据库驱动JAR文件,如MySQL、Oracle或PostgreSQL的驱动,这些驱动使得generator工具能够连接到指定的数据库,读取表信息并生成代码。 总的来说,`generator 自动生成代码工具`是一个强大的...
总的来说,renren代码生成框架是Java开发中提高生产力的有效工具,特别适用于快速原型开发或者需要频繁调整数据库结构的项目。它通过自动化代码生成,使得开发者可以更加专注于业务逻辑的设计和实现,降低了维护成本...
XML(Extensible Markup Language)和JSON(JavaScript Object Notation)是两种常见的数据交换格式,它们用来结构化地存储和传输数据。 XML是一种标记语言,通过标签来定义数据结构,便于人和机器阅读。在...
"mysql-connector-java-5.1.45-bin.jar" 是 MySQL 数据库的驱动包,它使得 MBG 能够连接到 MySQL 数据库并获取表信息,以便进行代码生成。当然,如果你使用的是其他数据库,如 Oracle 或 PostgreSQL,你需要相应的...
3. **数据访问对象**(DAOs):如`StudentDAO.java`、`RoomDAO.java`,用于与数据库进行交互,执行CRUD(创建、读取、更新、删除)操作。 4. **服务层**(Services):如`StudentService.java`、`RoomService.java`...
2. **与PostgreSQL交互**:利用JDBC(Java Database Connectivity)接口,jpgAgent能够与PostgreSQL数据库进行通信,执行SQL命令和读取数据。 3. **事件驱动编程**:利用Java的多线程和事件处理机制,jpgAgent可以...
它可以读取、创建、修改XML文档,并且提供了XPath支持,是处理XML数据的强大工具,常与Spring框架结合使用。 4. **EasyMock** EasyMock是一个模拟测试框架,它允许开发者创建和控制对象的行为,以便进行单元测试。...
MyBatis Generator (MBG) 是一个强大的工具,它能够自动生成MyBatis相关的Java代码,包括实体类、Mapper接口和XML映射文件等。在标题提到的"mybatis反向生成工具(完整demo源代码,ui界面,非maven直接运行)mybatis...
1. 对象关系映射:通过XML映射文件或注解,将Java对象与数据库表关联,使得开发者可以像操作普通Java对象一样操作数据库记录。 2. 自动SQL生成:Hibernate自动根据对象操作生成对应的SQL语句,减少了手动编写SQL的...
DOM解析器如`jaxp-dom`,可以将XML文档加载到内存中,形成一棵树形结构,方便对XML数据进行读取和修改。在Java中,`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`接口是进行DOM解析的核心类。...
MBG通过读取数据库元数据,如表结构、字段类型等,然后按照预设的模板生成对应的Java代码。它支持多种数据库,包括MySQL、Oracle、SQL Server等。生成的代码包括: 1. **实体类(Entity Class)**:代表数据库表中...