Hibernate获取自增主键Id的方法

今天在开发的过程中,遇到了前端队友提出这样子的需求:

  • 批量保存一组标签的数据
  • 并将这些标签插入数据库时自增产生的id封装成数组返回

这里就涉及到一个,如何获取自增时自动赋值的Id的问题。
让我们先来了解一下save方法的执行过程

  1. 它会先将对象加入缓存,从而变为持久化对象
  2. 查看映射文件,并根据指定的生成器为持久化对象分配Id
  3. 计划执行一个insert语句,把对象当前的属性值组装到insert语句中
  4. 当session清理缓存的时候,执行sql语句将数据进行保存

通过上面对save方法执行过程的了解,我们可以发现,当执行完save语句后,对象是有Id的,因此我们可以通过执行完save方法后,可以使用getId()的方法来获取自增过程对象所获得的Id

// java代码:
@Override
    public int createTag(Tag tag) {
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        int temp = -1;
        try {
            session.save(tag);
            // 执行完save方法后,Tag对象有了Id
            temp = tag.getTagId();
            tx.commit();
        } catch (Exception e) {
            tx.rollback();
            e.printStackTrace();
        } finally {
            session.close();
        }
        return temp;
    }

简单说明版:

Man man = new Man();
save(man);
int id = man.getId();

博主学生党,在做一个课程大作业博客系统,如果有兴趣的可以查看:
https://github.com/Parallelline1996/blog_system

猜你喜欢

转载自blog.csdn.net/applying/article/details/80560124