很多情况下,一个关系某些属性的值是在插入新的元组时自动生成的,最常见的情况可能是对元组进行自动编号,这样的属性也常常用作该关系的主键。如下面这个关系的user_id属性的值就是由数据库自动生成,并且是从1开始递增:
DROP TABLE IF EXISTS `ripm`.`users`;
CREATE TABLE `ripm`.`users` (
`user_id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_email` varchar(100) NOT NULL,
`user_password` varchar(64) NOT NULL,
`user_nicename` varchar(45) NOT NULL DEFAULT '',
`user_url` varchar(100) NOT NULL DEFAULT '',
`user_registered` datetime NOT NUL,
`user_status` int(11) NOT NULL DEFAULT '0',
`user_activation_key` varchar(45) NOT NULL DEFAULT '',
PRIMARY KEY (`user_id`),
KEY `user_nicename` (`user_nicename`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
假设这个关系的其它属性值不要求是唯一的话,当插入一条新的元组后想获得该元组的user_id,最好的方法就是在插入数据之后,自动返回
user_id的值,而不是通过重新建立一个查询。况且在这样的情况下,重新建立一个查询也很难获得该元组的数据,因为除了user_id之外没有可以唯
一识别该元组的。
在JDBC中,要获得自动生成的键值可以使用Statement的execute(String sql, int autoGeneratedKeys)方法,例如:
Connection conn = //获得连接...;
Statement st = conn.createStatement();
st.execute(sql, Statement.RETURN_GENERATED_KEYS);
ResultSet rs = st.getGeneratedKeys();
if (rs.next()) {
long id = rs.getLong(1);
}
如果一个关系中有多个属性的值是自动生成的,而且又不明确有多少个,或者插入的不仅仅是一条数据的话,或许可以考虑使用以下方式,即通过获得结果集的元据来操作:
Connection conn = //获得连接...;
Statement st = conn.createStatement();
st.execute(sql, Statement.RETURN_GENERATED_KEYS);
ResultSet rs = st.getGeneratedKeys();
ResultSetMetaData rsmd = rs.getMetaData();
int cols = rsmd.getColumnCount();
while (rs.next()) {
for (int i = 1; i < = cols; i++) {
//处理数据...
}
}
本文转自 http://fwso.cn/blog/?p=540
此方法我已经在实际项目中使用,数据库使用的sql server2005,jdbc驱动使用的jtds的驱动。
分享到:
相关推荐
4. **生成属性**:根据字段名,自动生成Java实体类的属性声明。字段名通常需要遵循Java命名规范,将下划线转为驼峰式命名。 5. **生成getter和setter**:对于每个属性,生成相应的getter和setter方法。这些方法遵循...
"根据读取数据库自动生成实体bean"的标题表明我们将讨论一种方法,通过该方法我们可以自动化这个过程。这种方法主要利用了FreeMarker模板引擎,它是一个强大的、轻量级的、基于模板的语言,用于生成任何类型的文本...
本主题将深入探讨如何在Oracle数据库环境中,自动生成与MyBatis相关的XML配置文件、Mapper接口文件以及Model实体类,从而实现自动化开发。 1. MyBatis简介:MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储...
如果利用Oracle的面向对象的技术,可以通过创建一个新的数据库对象类型在数据库中模仿其数据和操作,然后使用JPublisher等工具生成自己的Java bean类。如果使用这种方式,不但Java应用程序可以使用应用软件的对象...
2. **数据库元数据获取**:连接成功后,工具会获取数据库的元数据,包括表的信息、列的类型、主键等。 3. **实体类模板化**:根据获取的元数据,工具会按照预设的模板生成实体类。这个过程可以是可定制的,允许...
2. **获取表信息**: 连接成功后,通过SQL查询获取数据库中的所有表名,或者根据需求指定特定表名。可以使用`SHOW TABLES;`命令来列出所有表。 3. **解析表结构**: 对每个表执行`DESCRIBE table_name;`命令,获取表...
综上所述,这个压缩包提供的JavaBean自动生成工具和JDBC连接池封装工具,能够显著提升数据库驱动的Java应用的开发效率和性能,减少程序员的工作量,使得数据库操作更加便捷和高效。对于处理大量数据库操作的项目,...
数据库数据生成XML是一种常见的数据转换方法,用于在不同的系统间传递和交换信息。XML(Extensible Markup Language)是一种标记语言,它的设计目标是传输和存储数据,而不是显示数据。XML的结构化特性使得它成为跨...
这类工具的主要目标是自动生成Java对象,这些对象与数据库表相对应,通常被称为Plain Old Java Objects(POJOs)。POJOs在Java应用中广泛用于表示业务实体,它们为开发者提供了对数据库记录的封装,使代码更易于理解...
该工具支持 MySQL 和 Oracle 两大主流关系型数据库,能够根据数据库中的表信息自动生成对应的 Java 代码,减少了手动编写这些重复性工作的时间。 首先,我们来了解 MyBatis 本身。MyBatis 是一款优秀的持久层框架,...
对于不支持序列的数据库,如MySQL,可以通过设置主键的`auto_increment`属性,然后执行`INSERT`语句来自动获取新生成的ID。 在实际项目中,我们可能会使用ORM框架如Hibernate或MyBatis来简化数据库操作。例如,在...
本项目“java 基于数据库的代码自动生成工程”就是这样一个工具,它结合了Spring Boot、Mybatis和React三大技术栈,旨在帮助开发者快速构建前后端分离的应用。 首先,Spring Boot是Spring框架的简化版本,它内置了...
3. **数据库元数据获取**:为了生成上述代码,系统首先需要获取数据库的元数据,如表名、字段名、数据类型等。这通常通过JDBC(Java Database Connectivity)完成,连接到数据库并执行SQL语句来获取表结构信息。 4....
- 自动化脚本:自动化工具可能需要动态获取数据库结构,以生成动态SQL或填充数据。 - 数据库文档:生成数据库文档时,表名和字段名是不可或缺的信息。 5. 压缩包中的"codefans.net"可能是指一个网站或资源来源,...
它可能通过JDBC(Java Database Connectivity)接口与Oracle数据库通信,获取元数据信息,然后根据这些信息动态地构建和写入Entity类的源代码。 总的来说,这个工具或框架提供了一种高效的方式来管理与数据库交互的...
2. **建立连接**:使用`DriverManager.getConnection()`方法获取数据库连接。 3. **创建Statement**:通过Connection对象创建Statement,用于执行SQL语句。 4. **执行SQL**:调用Statement的`executeQuery()`或`...
3. **实体类生成**:根据获取的表信息,工具类会自动生成对应的实体类源代码。每个字段会转化为类的属性,数据类型需转换为对应的Java类型。例如,`VARCHAR`可能对应`String`,`INT`对应`Integer`。 4. **注解添加*...
1. 数据库连接:使用JDBC(Java Database Connectivity) API建立与数据库的连接,获取数据库元数据,包括数据库名、表名、列名等信息。 2. 表结构解析:遍历获取到的数据库表信息,解析每个字段的属性,如字段名、...
Mybatis自动生成工具是一款高效实用的开发辅助软件,专为Java开发者设计,旨在简化数据库操作相关的代码编写工作。它支持MySQL和SQL Server两大主流数据库,能够自动根据数据库表结构生成对应的实体类(Entity)和...
数据库实体类代码生成是一种常见的开发辅助工具,它能够自动生成对应数据库表结构的Java对象(实体类),大大节省了开发人员手动编写这些类的时间。在Java Web开发中,特别是使用ORM(Object-Relational Mapping)...