由于项目需要,需要从一张表中的数据复制到另一张表中。
本来是打算使用Hibernate的O/R映射,因为Hibernate能够将JavaBean映射成数据库表,现在把这个过程逆转过来,将数据库表反映射成JavaBean,在网上找了很多资料,貌似没太详细的说明,如果大家有这方面的资料,请留言,大家讨论,这可能是一个比较难的问题,不过应该可以解决,这里征求一下大家的实现方法。
由于使用Hibernate的方法实现不出来,只能使用最笨的方法:
1.新建一个与待拷贝的表属性一样的表,包括字段名、字段类型、大小等的属性,这里可以使用JDBC来实现,今天测试一下,可以使用两种方法
(1)使用SQL语句来读出数据库字段属性,然后把其转了javaBean,具体实现:
select column_name,data_type from information_schema.columns where table_name = '表名';
使用查询的方法把表结构读出来,然后讲字段名和类型组合成JavaBean,通过Hibernate生成新的数据库表,这里使用JDBC查询,这里的DBInfo是保存数据库字段信息的javaBean:
public List<DBInfo> getDBDesc() throws SQLException {
List<DBInfo> list = new ArrayList<DBInfo>();
Connection conn = DBInit.getConnection();
String sql = "select column_name,data_type,character_maximum_length from information_schema.columns where table_name = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "tb_bookinfo");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
DBInfo info = new DBInfo();
info.setColumnName(rs.getString(1));
info.setDataType(rs.getString(2));
info.setCharacterMaximumLength(rs.getInt(3));
list.add(info);
}
return list;
}
(2)使用java.sql.ResultSetMetaData来读取其表结构的属性,例如:
Connection conn = DBInit.getConnection();
String sql = "select *from tb_bookinfo";
ResultSetMetaData rsmd = null;
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
rsmd = rs.getMetaData(); // 获取字段名
if (rsmd != null) {
int count = rsmd.getColumnCount();
for (int i = 1; i <= count; i++) {
System.out.println("hyqTest======" + rsmd.getColumnName(i));
rsmd.getColumnType(i);
}
这样做真的很死板,希望能提供高效方法,谢谢各位网友!
我昨天头脑发烧了,实现上述功能直接用SQL语句就行了,SQL语句如下:
create table if not exists NewDBName.NewTBName select * from OldDBName.OldTBName;
分享到:
相关推荐
JDBC读取数据库元数据,生成JAVA实体类
在压缩包子文件的文件名称列表中,"FieldToRead--属性读写"可能表示的是一个实现此功能的具体文件,或者是一个示例,用于展示如何读取数据库字段并生成Java属性的读写方法。该文件可能是代码示例、配置文件或者是...
### 数据库读取CLOB字段 #### 概述 在Oracle数据库中,CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型。CLOB能够容纳4GB的文本信息,适用于存储如文章、报告或者XML文档等大型文本数据。...
Blob(Binary Large Object)是一种用于存储大量二进制数据的数据库字段类型,非常适合用来存储文件数据。本文将详细介绍如何使用Struts结合JDBC操作Oracle数据库中的Blob字段实现文件的保存和读取。 #### 代码分析...
以上就是通过JDBC读取Oracle数据库中CLOB字段并转换为String的基本过程。需要注意的是,由于CLOB可能包含大量数据,因此在读取时要考虑到性能和内存消耗。如果数据过大,可以考虑分块读取或使用流式处理,避免一次性...
以下将详细解析如何优化Spark中通过JDBC读取MySQL数据时的并发性能。 首先,了解Spark读取数据的默认模式是单partition操作,即并发度为1。这意味着整个数据集将会在单个partition上进行处理。这种模式在数据量不大...
本篇文章将深入探讨如何利用JDOM从数据库读取字段并生成XML树。 首先,让我们了解JDOM的基本概念。JDOM通过创建一个内存中的对象模型来表示XML文档,这个模型由节点(如元素、属性、文本等)组成。这使得我们可以...
在Java编程环境中,读取数据库表并将其转换为SQL文件是一项常见的任务,特别是在数据迁移、备份或测试场景中。下面将详细介绍如何实现这个过程,并基于给出的标题和描述进行讲解。 1. **配置文件读取**: 首先,...
// 读取其他字段... System.out.println("ID: " + id + ", Name: " + name); } ``` - `try-with-resources`语句用于确保资源(如Statement和Connection)在使用后会被正确关闭,防止内存泄漏。 5. **用户界面...
### Java读取SQL Server Image字段知识点详解 #### 一、背景与目的 在数据库应用开发过程中,经常会遇到需要存储图片等二进制数据的情况。SQL Server 提供了`IMAGE`类型来存储大容量的二进制数据。然而,如何有效地...
主要步骤包括创建数据库和表、导入MySQL驱动、处理异常以及实现基本的CRUD(创建、读取、更新、删除)操作。 #### 二、创建数据库和表 首先,在MySQL中创建一个名为`users`的表,该表包含以下字段: - `id`: int...
本主题主要探讨如何使用JDBC有效地操作Oracle数据库中的CLOB类型字段,包括插入(Insert)、删除(Delete)、更新(Update)和查询(Select)等操作。 首先,我们需要理解CLOB的基本概念。CLOB是一种数据库对象,...
下面我们将详细探讨如何使用EasyExcel实现并发读取文件字段、进行数据校验、将数据写入新文件以及批量插入到数据库的操作。 1. **EasyExcel介绍** EasyExcel是一款轻量级的Java Excel处理框架,它基于NIO和内存...
本教程“传智播客JDBC_完成对数据库的CRUD操作”主要涵盖了如何利用JDBC进行数据库的基本操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据。 一、创建(Create) 创建数据通常涉及到...
在Java应用程序中读取Oracle数据库中的BLOB字段通常涉及到几个步骤:建立数据库连接、执行查询语句、获取结果集并从中提取BLOB数据,最后将这些数据写入到文件中。 ##### 3.1 加载Oracle驱动 在Java程序中使用...
在Java编程中,读取数据库并替换文本字段然后生成新的文本是一个常见的任务,尤其是在处理大量数据或者进行数据处理与分析的场景。以下是一些相关的知识点: 1. **JDBC(Java Database Connectivity)**:Java访问...
在本教程中,我们将深入探讨如何使用Java的JDBC(Java Database Connectivity)接口来从MySQL数据库中读取数据,并将这些数据动态地显示在Android应用的ListView组件上,同时利用SimpleAdapter进行数据绑定。...
1. 数据库字段类型:不同的数据库系统对日期时间类型的精度支持不同。例如,MySQL的DATETIME类型默认只有秒级别的精度,而Oracle的TIMESTAMP可以达到纳秒级别。 2. JDBC驱动处理:某些JDBC驱动在处理Timestamp对象...
在Java编程中,读取数据库并将其...总的来说,"读取数据库类写成java类"涉及了Java的数据库连接、SQL查询、结果集处理、对象映射以及面向对象的属性读写。理解这些概念对于开发与数据库交互的Java应用程序至关重要。
在Java Web开发中,JDBC(Java Database Connectivity)是Java与数据库交互的标准API,它允许Java应用程序连接并操作各种类型的数据库。本文将详细讲解如何使用JDBC对数据库执行CRUD(Create、Read、Update、Delete...