
mybatis插入数据后获取不到主键
发布日期:2021-05-14 23:43:45
浏览次数:15
分类:精选文章
本文共 1544 字,大约阅读时间需要 5 分钟。
mybatis插入数据后获取不到主键
mybatis插入数据,记录存在,但是获取不到主键
问题描述:
1.GoodsOrder order = this.setOrder(remark…));//此步骤对要插入的对象进行赋值(除了主键,数据库设置的主键自增)
2.dao.insert(order);//插入到数据库中 3.Integer orderId = order.getOrderId();//此处拿到的值为null
通过以上第一步赋值实体类,第二步将实体类插入到数据库,第三步获取刚刚插入的记录的主键id. 数据库插入数据成功,但是获取不主键ID,得到的是null.
可以确定的是,插入sql语句是没有问题
的,因为数据库是有最新记录的.其次主键id是在插入后才有的,所以应该是框架中返回的,所以要看下框架对insert配置的信息
. insert配置信息如下:
- parameterType ,入参的全限定类名或类型别名
- keyColumn ,设置数据表自动生成的主键名。对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置
- keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中
useGeneratedKeys ,取值范围true|false(默认值),设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中
。MySQL和SQLServer执行auto-generated - key field,因此当数据库设置好自增长主键后,可通过JDBC的getGeneratedKeys方法获取。但像Oralce等不支持auto-generated key field的数据库就不能用这种方法获取主键了- statementType ,取值范围STATEMENT,PREPARED(默认值),CALLABLE
- flushCache ,取值范围true(默认值)|false,设置执行该操作后是否会清空二级缓存和本地缓存
- timeout ,默认为unset(依赖jdbc驱动器的设置),设置执行该操作的最大时限,超时将抛异常
- databaseId ,取值范围oracle|mysql等,表示数据库厂家,元素内部可通过
<if test="_databaseId = 'oracle'">
来为特定数据库指定不同的sql语句
mapper文件如下:..... INSERT INTO jpgk_taolin_order_refund( )VALUES( order_id, remark, ) #{orderId,jdbcType=INTEGER}, #{remark,jdbcType=VARCHAR},
结论
主键设置的自动递增,由于使用了useGeneratedKeys=true,使用JDBC的getGenereatedKeys方法获取主键值并赋值给keyProperty,这个keyProperty表示的是代码中的字段属性,而不是表中的字段属性.在插入数据后获取罪行的字段值keyProperty字段值原值为order_id,正确的值应该为orderId
发表评论
最新留言
很好
[***.229.124.182]2025年04月10日 04时46分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2020版nodejs12.18.3安装配置教程
2021-05-14
iview组件库中,Form组件里的Input,无法正确绑定on-enter事件
2021-05-14
记录-基于springboot+vue.js实现的超大文件分片极速上传及流式下载
2021-05-14
JavaScript高级程序设计第四版学习记录-第九章代理与反射
2021-05-14
怎么解决Windows 10文件/文件夹正在使用无法删除
2021-05-14
matlab函数:fix 向0取整
2021-05-14
Allegro中如何消除器件本身Pin间距报错
2021-05-14
linux--练习001-基础类型
2021-05-14
Flask--简介
2021-05-14
16 python基础-恺撒密码
2021-05-14
06.1 python基础--结构控制
2021-05-14
Frame--Api框架
2021-05-14
idea 在Debug 模式中运行语句中函数的方法
2021-05-14
Boostrap技能点整理之【网格系统】
2021-05-14
新闻发布项目——业务逻辑层(UserService)
2021-05-14
hibernate正向生成数据库表以及配置——hibernate.cfg.xml
2021-05-14
javaWeb服务详解(含源代码,测试通过,注释) ——Emp的Dao层
2021-05-14
java实现人脸识别源码【含测试效果图】——Dao层(IUserDao)
2021-05-14