首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

这样获取MySql刚插入的ID(自增ID)有有关问题吗

2012-01-20 
这样获取MySql刚插入的ID(自增ID)有问题吗?我在MySql的API里看到last_insert_id()可以返回上一次插入的数

这样获取MySql刚插入的ID(自增ID)有问题吗?
我在MySql的API里看到last_insert_id()可以返回上一次插入的数据的ID

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id

然后我写了一个在Hibernate中用原生SQL插入数据后获取刚插入的数据的ID的方法如下:

Java code
public Integer batchSave(Session session, String insertSql, String tableName){        Transaction tx = session.beginTransaction();        Integer result = -1;        String queryString =                 "SELECT last_insert_id() FROM "+tableName+" LIMIT 1;";        try {            tx.begin();            result = [color=#FF0000]session.createSQLQuery(insertSql).executeUpdate();[/color]            session.flush();            tx.commit();            if(result > 0)                return(new Integer([color=#FF0000]session.createSQLQuery(queryString).list()[/color].get(0).toString()));        } catch (DataAccessException e) {            e.printStackTrace();            if (tx != null) {                tx.rollback();            }        }        return null;    }

按照MySql的API,只要是在同一个“会话”里先Insert再查询last_insert_id(),即使有并发,得到的结果是不会错的。
但是我对Hibernate不熟,我想问的是:上面的代码能确保两次查询(红色)在同一个MySql“会话”里执行吗?

谢谢了,这个代码写出来了用起来不放心,求大侠帮我看看。

[解决办法]
探讨

引用:

引用:

引用:

User usr = new User();
usr.setName("tom");
user.setAge(18);

session.save(usr);

//提交事務等操作

usr.getId();//即可取……

热点排行