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

2024-02-29 01:36

本文主要是介绍Mybatis插入数据时有外键怎么办?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

比方说我的数据库如下:

其中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>

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

这篇关于Mybatis插入数据时有外键怎么办?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/757205

相关文章

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

MyBatis延迟加载与多级缓存全解析

《MyBatis延迟加载与多级缓存全解析》文章介绍MyBatis的延迟加载与多级缓存机制,延迟加载按需加载关联数据提升性能,一级缓存会话级默认开启,二级缓存工厂级支持跨会话共享,增删改操作会清空对应缓... 目录MyBATis延迟加载策略一对多示例一对多示例MyBatis框架的缓存一级缓存二级缓存MyBat

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl