首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么myBatis插入/更新函数现在需要在将FK添加到DB后提交?

myBatis是一种Java持久化框架,用于简化数据库操作。在使用myBatis进行插入/更新操作时,需要在将外键(FK)添加到数据库后才能提交事务的原因如下:

  1. 数据完整性保证:外键是用于建立表与表之间关系的约束,确保数据的完整性。在插入/更新数据时,如果外键还未添加到数据库中,可能会导致数据不一致或违反约束,因此需要先将外键添加到数据库中,然后再提交事务,以保证数据的完整性。
  2. 事务的原子性:在数据库操作中,事务是一组操作单元,要么全部成功,要么全部失败。如果在插入/更新数据之前就提交事务,可能会导致数据不一致或部分操作失败,无法保证事务的原子性。因此,将外键添加到数据库后再提交事务,可以确保事务的原子性。
  3. 数据库性能优化:在插入/更新数据时,如果频繁地提交事务,会增加数据库的负载和开销。将外键添加到数据库后再提交事务,可以减少事务的次数,提高数据库的性能。

推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云云数据库TDSQL、腾讯云云原生数据库TDSQL-C等。这些产品提供了稳定可靠的数据库服务,支持高性能、高可用的数据存储和管理,适用于各种规模的应用场景。

腾讯云数据库MySQL产品介绍链接地址:https://cloud.tencent.com/product/cdb

腾讯云云数据库TDSQL产品介绍链接地址:https://cloud.tencent.com/product/tdsql

腾讯云云原生数据库TDSQL-C产品介绍链接地址:https://cloud.tencent.com/product/tdsqlc

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SSM 项目 ——— 小米商城后台管理系统

使用数据库连接池技术,使用mybatis框架完成底层实体类的创建和数据访问层的实现。 实现登录功能。 实现登录成功全部商品分页显示。 实现Ajax的翻页功能。...(业务层) 相关配置,主要分为以下几步操作 (1) 配置组件扫描器,完成对于 services 包的扫描,使注解生效 (2) 设置事务管理器 (3) 添加事务切面 (4) 完成切面和切入点的织入 至于为什么要在...在控制层中,我们接受到浏览器的请求之后,调用通过业务层对象调用getAll()方法从数据库中获取所有商品的数据,添加到 request 作用域中,并提交给 Product.jsp 界面,在 Product.jsp...分页操作实际上就是要在函数中实现 select * from product_info limit 10,5查询,在此我们使用 PageHelper 插件来辅助完成分页操作。...每次 page 传入 ajaxSplit(page) 函数中,并将数据提交控制器给 ajaxSplit.action 中,新的page数据存入到session中,EL表达式${}的原理是每次刷新页面都重新从

3.5K30
  • MyBatis框架的使用解析!数据库相关API的基本介绍

    MyBatis 3.2版本开始支持插入脚本语言 允许插入一种语言驱动,并基于这种语言来编写动态SQL查询语句 通过实现LanguageDriver接口插入语言: public interface LanguageDriver...> parameterType); } 实现自定义语言驱动,可以在mybatis-config.xml文件中设置为默认语言: <typeAliase type="com.oxford.MyLanguageDriver...略过指定数量的记录,并限制返回结果的数量 RowBounds类的offset和limit值只有在构造<em>函数</em>时才能传入,其他时候是不能修改的 int offset = 100; int limit = 25...不会自动<em>提交</em>事务,除非发现到调用了<em>插入</em>,<em>更新</em>或删除方法改变了数据库 如果没有使用这些方法<em>提交</em>修改,那么就可以在commit和rollback方法参数传入true值来保证事务被正常<em>提交</em> 注意: 在自动<em>提交</em>模式或者使用了外部事务管理器的情况下...,设置force值对session无效 大部分情况下,无需调用rollback(), 因为<em>MyBatis</em>会在没有调用commit() 时完成回滚操作 但是,当<em>要在</em>一个可能多次<em>提交</em>或回滚的session中详细控制事务

    74920

    MyBatis框架点滴】——mybatis插入不显示,但是主键自增了?

    这是为什么呢?   如图,这是原来表中的数据,主键id是自增的,现在表中id最大值为14: ?   执行插入操作前,user的id为0: ?   ...执行插入操作,user的id由数据库中的id自增为15: ?   执行结束查看数据库中的数据,id为15的这条数据并没有插入。   ...郁闷了10秒钟,猜想应该是事务的问题(更新数据库不报错但更新不成功往往是事务没执行完毕)。于是就查资料~结果不出我所料,果然是事务没提交。   ...但是jdbc事务由mybatis管理时,事务需要显示提交。   所以需要在执行插入,手动提交事务。...---- 【 转载请注明出处——胡玉洋《【MyBatis框架点滴】——mybatis插入不显示,但是主键自增了?》】

    1.8K20

    MyBatis系列第3篇:Mybatis使用详解(1)

    配置mybatis全局配置文件 使用mybatis操作数据库,那么当然需要配置数据库相关信息,这个需要在mybatis全局配置文件中进行配置。...mybatis提供一个全局配置的xml文件,可以在这个配置文件中对mybatis进行配置,如事务的支持,数据源的配置等等,这个属于配置文件,我们一般放在main/resource中。...在mybatis中一般我们一个表的所有sql操作写在一个mapper xml中,一般命名为XXXMapper.xml格式。...mybatis全局配置文件中引入Mapper xml文件 UserMapper.xml我们写好了,如何让mybatis知道这个文件呢,此时我们需要在mybatis-config.xml全局配置文件中引入...进行查询操作,insert相关的可以对db进行插入操作,update相关的可以对db进行更新操作。

    61220

    程序猿必备技能之MySQL基础篇

    外键名称,fk外键,mtable主表名称,pk主键字段 alter table stable add constraint fk_name(如:FK_从表_主表) foreign key stable(...show errors; --显示安装的可用存储引擎和默认引擎。...MYSQL常用函数 https://www.runoob.com/mysql/mysql-functions.html 1.3.7....不可重复读    指事务A两次读取到的数据不一致,因为事务B更新了数据,可以通过在事务A读取数据时添加共享锁,当事务B执行更新时就需要等待事务A释放共享锁。...幻读    事务A读取数据时,是读取某个范围的数据,当事务B向数据表中插入数据,事务A就读取到新增的数据导致幻读;这种情况需要在读取数据时锁住范围内的数据行,对于MySQL InnoDB引擎能解决幻读

    45720

    Python自动化开发学习12-Mari

    因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,不仅要保存数据,还要保存一下索引文件。...,所以执行提交,否则不会生效。...创建成功重复运行不会再创建或者覆盖,也不会报错。 插入数据 要插入数据,前面创建表的整段代码都要抄下来。先是连接数据库,然后是声明表结构一句都不能少。...,即每节课都有整班学员上,为了纪录每位学员的学习成绩,在创建每节上课纪录时,同时为这个班的每位学员创建一条上课纪录 为学员批改成绩, 一条一条的手动修改成绩 学员视图 提交作业 查看作业成绩 一个学员可以同时属于多个班级...,就像报了Linux的同时也可以报名Python一样,所以提交作业时先选择班级,再选择具体上课的节数 附加:学员可以查看自己的班级成绩排名

    2.7K10

    MyBatis:基本应用

    为什么使用框架? 框架封装好了一些冗余、重用率低的代码,并且使用反射与动态代理机制,代码实现了通用性,让开发人员把精力专注在核心的业务代码实现上。..."); } else { System.out.println("更新用户失败"); } // 手动提交事务 sqlSession.commit();...它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期。 例如:mybatis 与 spring 整合,事务交给 spring 容器管理。 2....常用的有如下两个: openSession() - 会默认开启一个事务,但事务不会自动提交,也就意味着需要手动提交该事务,更新操作数据才会持久化到数据库中 openSession(boolean autoCommit...() throws IOException { // 下面几句的模板代码已经不需要在 Dao 层编写,后续与 Spring 整合就不需要重复写模板代码了 InputStream resourceAsStream

    1.3K30

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券