网站建设内容,国家建设网资质查询,软件定制开发费用多少云鲸互创团队,怎样建立门户网站记录一下碰到的问题#xff0c;就当做是笔记吧#xff0c;防止忘记。在做ssm多表新增的时候#xff0c;碰到了一个小问题#xff0c;就是在新增成功一个表的时候我要获取它的ID#xff0c;然后用它的ID新增下一个表。 但是#xff0c;我要怎么做呢#xff1f;新增成功就当做是笔记吧防止忘记。在做ssm多表新增的时候碰到了一个小问题就是在新增成功一个表的时候我要获取它的ID然后用它的ID新增下一个表。 但是我要怎么做呢新增成功再查询一次不会吧这么麻烦。后来我想起了有个方法可以在新增的时候获取它的主键id然后我再百度了一下打算把它写下来。 第一种方法在mapper.xml新增语句中设置useGeneratedKeys参数值为truekeyProperty“id” 注意这里的id是自增的主键id对于上面的大概意思是在完成新增后获取到数据库自动生成的主键id。注意useGeneratedKeys参数只对insert语句生效默认为false。
insert idinsertPrivilege useGeneratedKeystrue keyPropertyprivilegeid parameterTypecom.gx.vo.studentVoinsert into p_privilege(auditID,PrivilegeAmount,PrivilegeReason) values (#{auditID},#{PrivilegeAmount},#{PrivilegeReason})/insert
第二种方法在insert 里添加 selectKey 元素,属性keyProperty为实体类的属性id
insert idinsertPrivilege parameterTypecom.gx.vo.studentVoselectKey keyPropertyPrivilegeID orderAFTERresultTypejava.lang.IntegerSELECT LAST_INSERT_ID()/selectKeyinsert into p_privilege(auditID,PrivilegeAmount,PrivilegeReason) values (#{auditID},#{PrivilegeAmount},#{PrivilegeReason})/insert这里注意order在mysql里使用AFTER表示执行完新增语句再执行selectKey元素 如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句
关于order的小栗子来源于百度
期望结果插入用户并获得插入后的主键ID 下面是配置信息想要insert 后 返回ID 1、mybatis Mapper.xml 2、打印影响行和返回主键ID 3、结果却很出乎意料 ID是null, 影响行是负值 换了各种方式测试。 比如 1order“BEFORE” selectKey select last_insert_id() 结果 id0, r-2147482646 2order“BEFORE” selectKey select 23 结果id23 , r-2147482646 3order “AFTER” selectkey select 23 , 结果idnull r同上