Spring 中jdbcTemplate 实现执行多条sql语句示例

发布时间 - 2026-01-10 22:31:54    点击率:

说一下Spring框架中使用jdbcTemplate实现多条sql语句的执行:

很多情况下我们需要处理一件事情的时候需要对多个表执行多个sql语句,比如淘宝下单时,我们确认付款时要对自己银行账户的表里减去订单所需的钱数,即需要更新银行账户的表,同时需要更新淘宝订单的表将订单状态改为“已付款”,这就需要先后执行多个sql(仅仅用于表达执行多的SQL的举例说明,具体淘宝如何实现并不是很清楚~~~~~); 但如果这中间出现电脑断网断电等问题,仅将我们银行账户的钱扣掉了,订单状态并没有改,那我们是不是很惨,但实际上我们并没有遇到这种情况对吧,下面我就来讲一下如何使用Spring 中jdbcTemplate 实现执行多条sql语句,而不出现这种情况

@Test  
public void 权限分配(){
    //1.客户端复选框传递过来一个数组1,2 菜单的ID
    Integer[] menus =new Integer[]{1,2};
    //2.声明sql数组
    String [] sql =new String [menus.length+1];
    //3.通过Role_id 200 删除表中数据
    sql[0] = "delete from role_link_menu where fk_role_id=200";
    //4新数据添加到中间表
    for (int i=0;i<menus.length;i++) {
      sql[i+1]="insert into role_link_menu(id,fk_role_id,fk_menu_id) values ('"+UUID.randomUUID().toString()+"',200,             "+menus[i]+")";
    }
    jdbcTemplate.batchUpdate(sql);
  }

前提我们已经连接好数据库

这样我们一共执行了3条SQL语句

1.delete from role_link_menu where fk_role_id=200

2.insert into role_link_menu(id,fk_role_id,fk_menu_id) values ('"+UUID.randomUUID().toString()+"',200,1")";

3.insert into role_link_menu(id,fk_role_id,fk_menu_id) values ('"+UUID.randomUUID().toString()+"',200,2")";

这期间任一条SQL语句出现问题都会回滚[**]*有语句没有执行前的最初状态^_^

对比下面一组代码,我们就可以发现其中不同

@Test
  public void 权限分配单个处理() throws Exception{
    //1.通过Role_id 200 删除表中数据
    String sql = "delect from role_link_menu where fk_role_id=200";
    jdbcTemplate.update(sql);
    //2.客户端复选框传递过来一个数组1,2 菜单的id
    Integer[] menus =new Integer[]{1,2};
    //3.新数据添加到中间表
    for (int i=0;i<menus.length;i++) {
      String menu_sql="insert into role_link_menu(id,fk_role_id,fk_menu_id) values ('"+UUID.randomUUID().toString()+           "',200,"+menus[i]+")";
      if(i==1){
        throw new Exception("=====");
      }
      jdbcTemplate.update(menu_sql);
    }
  }

这里当i=1会出现异常程序终止,共执行了2条语句

1.delect from role_link_menu where fk_role_id=200

2.insert into role_link_menu(id,fk_role_id,fk_menu_id) values ('"+UUID.randomUUID().toString()+ "',200,1)";

下面一句不会执行,但之前这两条执行完毕,就相当于本来我们要买啤酒喝炸鸡,账户钱扣了,结果就只给了你一罐啤酒,是不是郁闷捏,啊哈,反正我不会开心

滴~~~ 

**注:

回滚:事务是一组组合成逻辑工作单元的操作,虽然系统中可能会出错,但事务将控制和维护事务中每个操作的一致性和完整性。

例如,在将资金从一个帐户转移到另一个帐户的银行应用中,一个帐户将一定的金额贷记到一个数据库表中,同时另一个帐户将相同的金额借记到另一个数据库表中。由于计算机可能会因停电、网络中断等而出现故障,因此有可能更新了一个表中的行,但没有更新另一个表中的行。

如果数据库支持事务,则可以将数据库操作组成一个事务,以防止因这些事件而使数据库出现不一致。如果事务中的某个点发生故障,则所有更新都可以回滚到事务开始之前的状态。如果没有发生故障,则通过以完成状态提交事务来完成更新。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# spring执行sql语句  # spring  # jdbctemplate  # jdbctemplate执行sql  # springboot使用JdbcTemplate完成对数据库的增删改查功能  # spring实现jdbctemplate添加事务支持示例  # 详解spring boot中使用JdbcTemplate  # SpringBoot JdbcTemplate批量操作的示例代码  # spring的jdbctemplate的crud的基类dao  # Java 使用JdbcTemplate 中的queryForList发生错误解决办法  # 使用jdbcTemplate查询返回自定义对象集合代码示例  # Spring Boot中使用jdbctemplate 操作MYSQL数据库实例  # SpringBoot使用JdbcTemplate操作数据库  # JdbcTemplate方法介绍与增删改查操作实现  # 多个  # 淘宝  # 的钱  # 这种情况  # 多条  # 复选框  # 客户端  # 我就  # 一句  # 有可能  # 不是很  # 所需  # 而不  # 这就  # 给了  # 我不会  # 如果没有  # 很清楚  # 则可  # 时要 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 大连 网站制作,大连天途有线官网?  如何用花生壳三步快速搭建专属网站?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  香港服务器WordPress建站指南:SEO优化与高效部署策略  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  如何快速生成高效建站系统源代码?  详解Huffman编码算法之Java实现  文字头像制作网站推荐软件,醒图能自动配文字吗?  敲碗10年!Mac系列传将迎来「触控与联网」双革新  如何正确下载安装西数主机建站助手?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  重庆市网站制作公司,重庆招聘网站哪个好?  音响网站制作视频教程,隆霸音响官方网站?  独立制作一个网站多少钱,建立网站需要花多少钱?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Laravel用户密码怎么加密_Laravel Hash门面使用教程  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  如何快速上传自定义模板至建站之星?  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  济南网站建设制作公司,室内设计网站一般都有哪些功能?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel如何使用.env文件管理环境变量?(最佳实践)  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  Laravel如何实现多对多模型关联?(Eloquent教程)  如何用搬瓦工VPS快速搭建个人网站?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  Java垃圾回收器的方法和原理总结  海南网站制作公司有哪些,海口网是哪家的?  C语言设计一个闪闪的圣诞树  Laravel如何实现一对一模型关联?(Eloquent示例)  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  清除minerd进程的简单方法  创业网站制作流程,创业网站可靠吗?  如何利用DOS批处理实现定时关机操作详解  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  南京网站制作费用,南京远驱官方网站?  原生JS获取元素集合的子元素宽度实例  长沙做网站要多少钱,长沙国安网络怎么样?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案