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

如何表之间使用了级联,并且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);

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

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

ps.executeUpdate();

ResultSet rs = ps.getGeneratedKeys();

int id = rs.next().getInt(1);

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

xx.save(a);

//commit;

int id = a.getId();

当然,mysql中也有相关的语法来获取:select last_insert_id();



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值