hibernate中获取使用mysql当前插入一条记录的id值
2014-04-19 16:00
537 查看
如何表之间使用了级联,并且hibernate进行了相关配置,那么就不用去获取该条记录的id值。但是如果没有设置关联关系的话,就要考虑了。
比如在A表中插入一条数据,也需要在B表中插入相关的信息,这个时候就需要知道插入A表的一条记录的id值了(如果你使用id值进行模拟关联 关系的话且id都是自增的)
此时:如果hibernate没有对事务进行控制,即没有commit之前获取该条记录的id值,就需要使用PreparedStatement的对象的getGeneratedKeys()方法获取最后插入记录的自增id值。
[/code]
[/code]
[/code]
xx.save(a);
//commit;
int id = a.getId();
当然,mysql中也有相关的语法来获取:select last_insert_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使用LAST_INSERT_ID()获取新插入记录的ID
- jdbc插入一条记录后,马上获取到当前记录的id,以方便对插入的当前记录进行更多的操作
- MySQL使用GROUP_CONCAT()函数按ID分组将多条记录的某个字段以逗号或者指定分隔号隔开成一条记录
- Linq To EF 使用小知识(添加记录后获取添加的自增ID和叫“ID”的列不是自增列不让插入的问题)
- 三种返回mysql 插入一条记录返回该记录id方法
- 如何插入一条记录获取插入后的自动增长ID列的方法.
- Java获取最后插入MySQL记录的自增ID值方法
- Linq To EF 使用小知识(添加记录后获取添加的自增ID和叫“ID”的列不是自增列不让插入的问题)
- mysql中插入一条记录返回该记录id
- mysql更新语句获取受影响行数和插入记录id
- mysql获取刚插入(添加)记录的自动编号id
- C#中使用MySqlCommand执行插入语句后获取该数据主键id值的方法
- mybatis获取当前插入记录的id
- 数据库中插入一条记录后获取主键id
- mybatis获取当前插入记录的id
- Java获取最后插入MySQL记录的自增ID值的3种方法
- MySQL中如何获取下一条插入的自增ID 或 刚刚插入的id
- 插入一条记录并获取自增的id
- MyBatis插入记录获取自增的ID(MySQL)
- MySql获取插入记录自增主键ID值