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();



你可能感兴趣的:(菜鸟每天进步一点点)