在spring+ibatis中使用LAST_INSERT_ID()是否安全?
项目数据库要从oracle转为mysql。
为了获取插入数据的id,oracle中有sequence ,对mysql不是很熟悉,google得知一般都用自增字段去实现。
ibatis中这样写的:
关于LAST_INSERT_ID() 看到文档提到是:
“产生的ID 每次连接后保存在服务器中。这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMENT值的。这个值不能被其它客户端影响,即使它们产生它们自己的 AUTO_INCREMENT值。这个行为保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁或处理。”
请问大家这种方法在高并发状态下是否安全?
或者有没有其他好的方式模拟sequence ?
非常感谢!
为了获取插入数据的id,oracle中有sequence ,对mysql不是很熟悉,google得知一般都用自增字段去实现。
ibatis中这样写的:
<insert id="insertIssue" parameterClass="Issue">
insert into issue (name,issue_user,status)
values (#name#,#issueUser#,#status#)
<selectKey resultClass="int" keyProperty="id">
SELECT LAST_INSERT_ID() AS ID
</selectKey>
</insert>
关于LAST_INSERT_ID() 看到文档提到是:
“产生的ID 每次连接后保存在服务器中。这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMENT值的。这个值不能被其它客户端影响,即使它们产生它们自己的 AUTO_INCREMENT值。这个行为保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁或处理。”
请问大家这种方法在高并发状态下是否安全?
或者有没有其他好的方式模拟sequence ?
非常感谢!
...全文
相关推荐
spring boot整合mybatis利用Mysql实现主键UUID的方法
例如:```javaimport org.apache.ibatis.annotations.Insert;import org.apache.ibatis.annotations.Select;public
ibatis的实现(包含模糊查询、关联查询、增删改查)
#{name}, #{email}) <selectKey keyProperty="userId" resultType="int" order="AFTER"> SELECT LAST_INSERT_ID
iBatis教程中文版
在实际的企业开发中,结合Spring等框架使用,可以构建出稳定可靠的SS(Spring + iBatis)或SSH(Spring + Struts + Hibernate)架构。
mybatis文档
- MySQL:利用自增长特性,通过 SQL 语句 `SELECT LAST_INSERT_ID()` 获取最后插入行的 ID。#### 7.
java-kencie
(statement = "select last_insert_id()", keyProperty = "id", before = false, resultType = Integer.class


