您的位置:首页 > 数据库 > MySQL

hibernate中获取使用mysql当前插入一条记录的id值

2014-04-19 16:00 537 查看
如何表之间使用了级联,并且hibernate进行了相关配置,那么就不用去获取该条记录的id值。但是如果没有设置关联关系的话,就要考虑了。

比如在A表中插入一条数据,也需要在B表中插入相关的信息,这个时候就需要知道插入A表的一条记录的id值了(如果你使用id值进行模拟关联 关系的话且id都是自增的)

此时:如果hibernate没有对事务进行控制,即没有commit之前获取该条记录的id值,就需要使用PreparedStatement的对象的getGeneratedKeys()方法获取最后插入记录的自增id值。

String
sql = 
"INSERT
INTO users (username,password) VALUES (?,?);"
;


PreparedStatement
ps = (PreparedStatement) conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);

[/code]

ps.setString(
1
,
user.getUsername());

[/code]

ps.setString(
2
,
user.getPassword());

[/code]


ps.executeUpdate();


ResultSet
rs = ps.getGeneratedKeys();


int
 
id
=
rs.next().getInt(
1
);
[/code]


但是,如果控制了事务(commit之后),直接就可以获取了
[/code]

xx.save(a);
//commit;
int id = a.getId();
当然,mysql中也有相关的语法来获取:select last_insert_id();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql id 事务