mybatis insert 返回主键 的before 和after的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis insert 返回主键 的before 和after的区别相关的知识,希望对你有一定的参考价值。
如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,可以在插入语句中嵌入序列调用。 参考技术A 期望结果:插入用户并获得插入后的主键ID下面是配置信息:想要insert 后 返回ID
1、mybatis userMapper.xml
2、打印影响行,和返回主键ID
3、
结果却很出乎意料, ID是null, 影响行:是负值
换了各种方式测试, 比如
(1)order="BEFORE" selectKey= select last_insert_id(), 结果 id=0, r=-2147482646
(2)order="BEFORE" selectKey= select 23 ,结果id=23 , r=-2147482646
(3) order = "AFTER" selectkey = select 23 , 结果id=null r=同上本回答被提问者采纳
mybatis insert 之后,返回主键为null,我的配置如下
<insert id="addProject" parameterType="Project" flushCache="true">
insert into project(project_name,project_number,Project_start_date,Project_end_date,project_act_start_date,Project_act_end_date,Project_status,Project_description,Project_note)
values(#projectName,#projectNumber,#projectStrDate,#projectEndDate,#projectActStrDate,#projectActEndDate,#projectStatus,#projectDes,#projectNote)
<selectKey keyProperty="projectId" resultType="java.lang.Integer" order="AFTER" >
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
执行玩insert之后 在dao层里调用project.getProjectId() 结果是null 请问怎么回事?
SELECT LAST_INSERT_ID() AS projectId
就行了,希望能帮到你 参考技术B 连接断开了?
在这个框架内,可能是不同的连接完成不同的工作的。
以上是关于mybatis insert 返回主键 的before 和after的区别的主要内容,如果未能解决你的问题,请参考以下文章
mybatis insert 返回主键 的before 和after的区别