说一下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方法介绍与增删改查操作实现
# 多个
# 淘宝
# 的钱
# 这种情况
# 多条
# 复选框
# 客户端
# 我就
# 一句
# 有可能
# 不是很
# 所需
# 而不
# 这就
# 给了
# 我不会
# 如果没有
# 很清楚
# 则可
# 时要
相关文章:
广平建站公司哪家专业可靠?如何选择?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
如何在云主机快速搭建网站站点?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
建站之星后台密码遗忘?如何快速找回?
内网网站制作软件,内网的网站如何发布到外网?
开心动漫网站制作软件下载,十分开心动画为何停播?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
在线制作视频的网站有哪些,电脑如何制作视频短片?
建站主机与服务器功能差异如何区分?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
建站主机如何选?性能与价格怎样平衡?
如何登录建站主机?访问步骤全解析
电商平台网站制作流程,电商网站如何制作?
Android自定义listview布局实现上拉加载下拉刷新功能
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
建站之星后台管理:高效配置与模板优化提升用户体验
海南网站制作公司有哪些,海口网是哪家的?
如何快速搭建高效WAP手机网站?
内部网站制作流程,如何建立公司内部网站?
如何选购建站域名与空间?自助平台全解析
建站主机如何选?高性价比方案全解析
开封网站制作公司,网络用语开封是什么意思?
如何选择可靠的免备案建站服务器?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
如何通过商城自助建站源码实现零基础高效建站?
建站之星客服服务时间及联系方式如何?
建站之星云端配置指南:模板选择与SEO优化一键生成
定制建站是什么?如何实现个性化需求?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
如何通过免费商城建站系统源码自定义网站主题与功能?
存储型VPS适合搭建中小型网站吗?
建站之星多图banner生成与模板自定义指南
常州企业建站如何选择最佳模板?
如何在阿里云域名上完成建站全流程?
北京制作网站的公司,北京铁路集团官方网站?
网站制作壁纸教程视频,电脑壁纸网站?
清除minerd进程的简单方法
建站主机选购指南:核心配置与性价比推荐解析
,石家庄四十八中学官网?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
非常酷的网站设计制作软件,酷培ai教育官方网站?
如何自定义建站之星网站的导航菜单样式?
网站制作公司排行榜,四大门户网站排名?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
如何通过可视化优化提升建站效果?
*请认真填写需求信息,我们会在24小时内与您取得联系。