Mybatis插入数据时有外键怎么办?

news/2024/7/5 3:30:16

今天在写代码的时候遇到了一个问题:

比方说我的数据库如下:

其中work_position和auth都是外键,关联了另一张表。
但我现在要往mysql里插入一条数据,如下:

insert into t_employee_info(salary, work_time, work_position, auth) VALUES
        (2000,'8:00',1,1)

就会弹出错误:

[2024-02-28 22:30:07] [23000][1452] Cannot add or update a child row: a foreign key constraint fails (`museum`.`t_employee_info`, CONSTRAINT `t_employee_info_t_user_id_fk` FOREIGN KEY (`id`) REFERENCES `t_user` (`id`))
[2024-02-28 22:30:07] [23000][1452] Cannot add or update a child row: a foreign key constraint fails (`museum`.`t_employee_info`, CONSTRAINT `t_employee_info_t_user_id_fk` FOREIGN KEY (`id`) REFERENCES `t_user` (`id`))

搜索了很多解决方法,能在sql查询中解决的办法,比较好的是在运行插入前关闭外键,结束插入时开启外键,如下:

set foreign_key_checks = 0;
insert into t_employee_info(salary, work_time, work_position, auth) VALUES
(2000,'8:00',1,1);
set foreign_key_checks = 1;

但要放在mybatis中运行,就不支持set foreign_key_checks这句话了。

报错提示:

[2024-02-28 22:23:49] [42000][1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set
[2024-02-28 22:23:49] foreign_key_checks = 1' at line 12
[2024-02-28 22:23:49] [42000][1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set
[2024-02-28 22:23:49] foreign_key_checks = 1' at line 12 

 最后搜索了很多办法,发现仅仅是一个标点符号:``的问题
将代码修改为:

    <insert id="addEmployeeInfo" keyColumn="id" keyProperty="id" parameterType="com.museum.domain.po.EmployeeInfo" useGeneratedKeys="true">
<!--        set foreign_key_checks = 0;-->
        insert into t_employee_info(salary,work_time,`work_position`,`auth`)
        values (
            #{salary,jdbcType=DOUBLE},
            #{workTime,jdbcType=VARCHAR},
            #{workPosition,jdbcType=INTEGER},
            #{auth,jdbcType=INTEGER}
        )
        set foreign_key_checks = 1;
    </insert>

即在是外键的字段外用``包裹起来即能成功运行。


http://lihuaxi.xjx100.cn/news/2056309.html

相关文章

记录Python(简洁易上手)导入模块的四种方法(纯干货)

import是一种用于导入模块或包的关键字 可以导入标准库、第三方库 等标准库&#xff1a;比如os&#xff0c;re、math等 第三方库&#xff1a;requests 、lxml、bs4等 &#xff08;需要pip进行安装&#xff09; 四种调用模块的方法,以使用requests第三方库举例 第一种&#xff…

Failed to build tree: parent link [base_link] of joint [lidar_joint] not found

参考&#xff1a; Failed to build tree: parent link [base_link] of joint 在古月居gazebo 的基础教程里&#xff0c;运行古月居的mbot的launch文件报错&#xff0c;小机器人不出现。 主要原因是提供的xacro文件的宏定义没有放在xacro的命名空间。 解决&#xff1a; 将<mb…

Tomcat和Servlet学习记录

Tomcat和Servlet入门 1.Tomcat1.1什么是Tomcat1.2 目录结构1.3 IDEA中配置Tomcat 2.Servlet2.1 什么是Servlet2.2 使用Servlet获取参数2.3 Servlet生命周期2.4 Servlet.http.HttpServlet 3.Http协议4.Session 和Cookie4.1 Session4.2 Cookie 5.服务器端内部转发和客户端重定向6…

Mybatis-plus自定义模板生成代码

Mybatis-plus自定义模板生成代码 参考&#xff1a; 自定义ID生成器 | MyBatis-Plus 自定义属性注入到模板 - MyBatis Plus 教程 MyBatis Plus 代码生成器&#xff08;最新版本&#xff1a;V3.5.3&#xff09;使用指南 - 掘金 mybatis plus generator 3.5.1 从了解到自定义…

Go语言必知必会100问题-11 使用选项模式

使用选项模式 在设计API时&#xff0c;可能会遇到一个问题&#xff1a;如何处理可选配置&#xff1f;有效的解决可选配置问题可以提高API的灵活性。本文通过一个具体示例说明处理可选配置的一些方法。该示例的要求是设计一个对外提供创建HTTP服务器的库函数。函数定义如下&…

[MYSQL数据库]--mysql的基础知识

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、数据库…

优思学院|质量工程师需要学习什么软件?

初入职质量工程师的朋友常常会问&#xff1a;质量工程师需要学习什么软件&#xff1f;在质量控制和管理的世界里&#xff0c;拥有强大的数据分析工具是走向成功的关键&#xff0c;因此&#xff0c;对于质量工程师来说&#xff0c;掌握正确的软件不仅能提升工作效率&#xff0c;…

ad18学习笔记十六:如何放置精准焊盘到特定位置,捕抓功能的讲解

网上倒是一堆相关的指导 AD软件熟练度提升&#xff0c;如何设置板框捕捉&#xff1f;_哔哩哔哩_bilibili 关于Altium Designer 20 的捕抓功能的讲解_ad捕捉设置-CSDN博客 AD软件捕捉进阶实例&#xff0c;如何精确的放置布局元器件&#xff1f;_哔哩哔哩_bilibili AD绘制PCB…