mysql插入数据返回主键值_Mybatis 插入数据后返回主键值

Oracle中获取刚刚插入记录的主键值:

SELECT U_USER_INFO_SEQ.Nextval as ID from DUAL

insert into U_USER_INFO

ID,

USER_NAME,

REAL_NAME,

.....

要点是这里使用了selectKey来定义返回新生成的PrimaryKey,这个状况仅仅适用于Oracle。java

须要注意的地方是在Java代码中使用Integer类型,可是在MyBatis的映射文件中,使用java.math.BigDecimal类型,不然会报类型转换或者不匹配的错误。spring

MySQL与SQL Server获取刚刚插入数据的主键值:

useGeneratedKeys="true" keyProperty="id">

insert into spares(spares_id,spares_name,

spares_type_id,spares_spec)

values(#{id},#{name},#{typeId},#{spec})

使用useGeneratedKeys/KeyProperty来实现插入数据的时候,来完成新生成主键的返回。sql

其中异常信息的解决:oracle

异常信息:ide

org.springframework.jdbc.UncategorizedSQLException: Error getting generated key or setting result to parameter object. Cause: java.sql.SQLException: 无效的列类型: getBigDecimal not implemented for class oracle.jdbc.driver.T4CRowidAccessor

; uncategorized SQLException for SQL []; SQL state [99999]; error code [17004]; 无效的列类型: getBigDecimal not implemented for class oracle.jdbc.driver.T4CRowidAccessor; nested exception is java.sql.SQLException:

无效的列类型: getBigDecimal not implemented for class oracle.jdbc.driver.T4CRowidAccessorspa

问题解决:.net

问题是在Java代码中设置返回的主键数据类型,其中返回的数据类型为java.lang.Integer,而非BigDecimal和Long. 可是在MyBatis中的映射文件中的类型为java.math.BigDecimal.code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值