当前位置: 首页 > news >正文

mybatis mysql insert 主键id为空

错误示范

java代码设置了@param参数,但是sql 字段没有带上参数,例如

void insertV2(@Param("historyDO") HistoryDO historyDO);
<insert id="insertDuplicate" parameterType="com.test.entity.HistoryDO"keyProperty="id" useGeneratedKeys="true">

keyProperty="id" 没有对象参数,导致主键id插入成功后不能自动赋值

正确示范

方式一

insert语句使用了@Param参数,全程在设置参数需要带上参数名称,代码如下

public interface HistoryMapper extends MyMapper<HistoryDO> {void insertV2(@Param("historyDO") HistoryDO historyDO);
}
  <insert id="insertDuplicate" parameterType="com.test.entity.HistoryDO"keyProperty="historyDO.id" keyColumn="historyDO.id" useGeneratedKeys="true">INSERT INTO history (user_id,status,create_time,create_time_zone,update_time,update_time_zone)VALUES(#{historyDO.userId},#{historyDO.status},#{historyDO.createTime},#{historyDO.createTimeZone},#{historyDO.updateTime},#{historyDO.updateTimeZone})ON DUPLICATE KEY UPDATEstatus = VALUES(status),id = LAST_INSERT_ID(id),update_time = VALUES(update_time)</insert>

注意 keyProperty="historyDO.id" 需要加上参数对象名称historyDO,

#{}参数也需要加上参数对象名称historyDO

方式二

insert语句不使用@Param参数,全程在设置参数需不需要带上参数名称,代码如下

public interface HistoryMapper extends MyMapper<HistoryDO> {void insertV2(HistoryDO historyDO);
}
  <insert id="insertV2" useGeneratedKeys="true" keyProperty="id">INSERT INTO history (user_id,status,create_time,create_time_zone,update_time,update_time_zone)VALUES(#{userId},#{status},#{createTime},#{createTimeZone},#{updateTime},#{updateTimeZone})</insert>

http://www.lryc.cn/news/312459.html

相关文章:

  • 批次大小对ES写入性能影响初探
  • c语言十大核心用法
  • 网页打开慢,这锅该谁背?
  • 题目 1538: 蓝桥杯-格子位置
  • 第十三届蓝桥杯嵌入式省赛程序设计详细题解
  • Go 语言指针
  • 指针运算笔试题解析
  • Matlab梁单元有限元编程 | 铁木辛柯梁 | 欧拉梁 | Matlab源码 | 理论文本
  • Tensorflow2.0笔记 - 常见激活函数sigmoid,tanh和relu
  • 1688商品详情数据采集,工程数据采集丨店铺数据采集丨商品详情数据采集
  • Flutter(四):SingleChildScrollView、GridView
  • 【C++】102.二叉树的层序遍历
  • Java学习笔记006——子类与父类的类型转换
  • FedAsync Asynchronous Federated Optimization
  • 学习基于 JavaScript 语言 的计算机界三大神书”之一 ——SICP
  • 【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(一)-向量扩展编程模型
  • K8s 镜像缓存管理 kube-fledged 认知
  • ModbusTcp协议
  • 常用工具——Gradle
  • OpenHarmony教程指南—Navigation开发 页面切换场景范例
  • 2024-简单点-picamera2除了文档还有哪里可以学习实例?
  • JavaScript实现点击鼠标弹钢琴的效果
  • docker-compose Install rustdesk
  • 初学C++
  • 数据分析-Pandas数据y轴双坐标设置
  • Android多线程实现方式及并发与同步,Android面试题汇总
  • 2023年全国职业院校技能大赛中职组大数据应用与服务赛项题库参考答案陆续更新中,敬请期待…
  • 设计MySQL数据表的几个注意点
  • android 键盘遮挡输入框问题回忆
  • ZJGSU 1737 链表