注意: 使用DataSourceUtils.getConnection(dataSource);方式获取连接,而不是dataSource.getConnection()。

dataSource.getConnection()会取到非当前线程的连接导致和当前线程的事务中的连接不相同导致事务不生效的问题。

mybatis插入语句结合connection执行自定义sql插入语句的事务例子:

注意:结合mybatis插入语句事务时,必须保证connection是相同的,通过DataSourceUtils.getConnection(dataSource);来获取当前线程的connection,使用数据源时执行connection后必须要对PreparedStatement和ResultSet进行关闭,不能关闭connection(关闭将会抛出“提交事务时,连接已被关闭”)

下面是java代码 service层

@Autowired

private DataSource dataSource;

@Transactional()

public void aazz() throws Exception {

Connection connection = DataSourceUtils.getConnection(dataSource);

System.out.println("service diy jdbc::::::::::::" + connection.toString());

PreparedStatement preparedStatement = connection.prepareStatement(

"INSERT INTO`hmccgisDB_sit`.`GIS_TASK` (`ID`, `TASK_TITLE`, `TASK_DATA`,`TASK_DATA_REMARK`, `EMAIL`, `TEMPLATE_NAME`, `IS_APPEND`, `SOURCE`) VALUES('4', '5658', '', NULL, '', NULL, '0', '0')");

// 执行自定义sql插入

int a = preparedStatement.executeUpdate();

System.out.println(a);

preparedStatement.close();

PreparedStatement preparedStatement2 = connection.prepareStatement(

"INSERT INTO`hmccgisDB_sit`.`GIS_TASK` (`ID`, `TASK_TITLE`, `TASK_DATA`,`TASK_DATA_REMARK`, `EMAIL`, `TEMPLATE_NAME`, `IS_APPEND`, `SOURCE`) VALUES('5', '5658', '', NULL, '', NULL, '0', '0')");

// 执行自定义sql插入

int b = preparedStatement2.executeUpdate();

System.out.println(b);

preparedStatement2.close();

// connection.close();

// mybatis插入语句

payInfoMapper.aazz();

}

mysql getconnection 如何关闭连接_【MySQL】使用连接池获取Connection执行sql以及mybatis事务注意事项...相关推荐

  1. mysql多线程使用一个链接_探索多线程使用同一个数据库connection的后果

    在项目中看到有用到数据库的连接池,心里就思考着为什么需要数据库连接池,只用一个连接会造成什么影响?(只用一个connection)? 1  猜想:jdbc的事务是基于connection的,如果多线程 ...

  2. mysql创表的工种_[MySQL基础]七、连接查询

    含义:又称为多表查询,当查询的字段来自多个表时,就会用到连接查询 笛卡尔乘积现象 表1 有m行,表2有n行,结果为m*n行 发生原因:没有有效的连接条件. 如何避免:添加有效的连接条件. 案例:在bo ...

  3. mysql 5 7 教程视频_[MySQL] MySQL 5.7从入门到精通视频教程

    资源介绍 目录 ├─MySQL常用命令大全.pdf ├─视频教程 │xa0xa0├─第10讲 存储过程和函数 │xa0xa0│xa0xa0├─10.1xa0xa0创建存储过程和函数.avi │xa0x ...

  4. mysql 单机双实列_{ mysql } MySQL单机多实例及主从复制

    没有过多的,直接上码 my.cnf [mysql_multi] mysqld = /usr/bin/mysqld_safe mysqladmin = /usr/bin/mysqladmin user ...

  5. mysql带参数的sql_MySql存储过程是带参数的存储过程(动态执行SQL语句)

    下文介绍的MySql存储过程是带参数的存储过程(动态执行SQL语句),该MySql存储过程是根据用户输入的条件和排序方式查询用户的信息,排序条件可以没有调用方式: call GetUsersDynam ...

  6. python数据库操作批量sql执行_利用Python如何批量修改数据库执行Sql文件

    利用Python如何批量修改数据库执行Sql文件 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  利用Python如何批量修改数据库执行Sql文件.txt ] (友 ...

  7. mysql 远程主机强迫关闭了一个现有的连接_MySQL的explain优化(3)

    分析表中锁信息 1)查看那些表加了锁 show open tables 1代表表加了锁 2)分析表锁的严重程度 show status like 'table%' a. Table_locks_imm ...

  8. mysql server远程连接_本地远程连接 MySQL server

    问题 MySql Server 出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问.如果想远程访问,需要额外做下操作. 配置修改 定位文件 /etc/mysql/my ...

  9. mysql update 左连接_使用左连接的MySQL更新查询

    表格式 表名:file_manager_folder Rows:id,parentId,name 我的查询模拟将文件夹移动到另一个文件夹,并使用IN(?)接受数组. 如果没有相同的parentId和n ...

最新文章

  1. Android自定义Layout
  2. [转载] 深入剖析 redis 主从复制
  3. 微信小程序的线程架构
  4. Vue多个组件映射到同一个组件,页面不刷新?
  5. 基于.NET CORE微服务框架 -谈谈surging的服务容错降级
  6. 人月聊IT:对业务系统的可扩展性设计思考
  7. python多线程tcp客户端_基于Python多线程的TCP客户端/服务端应用示例
  8. 西安电子科技大学出版社 线性代数 参考答案 刘三阳
  9. Qimera和Fledermas处理大批量多波束数据的思考
  10. Android Netd ndc
  11. SAP ABAP 检查物料账期函数
  12. IDEA怎么查看现在的项目使用的JDK版本?
  13. MySQL添加索引及添加字段并建立索引
  14. 解决无法在哔哩哔哩(b站)上使用HTML5视频播放器脚本插件/油猴等插件失效的问题
  15. Streambox Ripper的问题
  16. javascript和jQurey增删元素
  17. 已知分布函数求概率密度例题_【考研数学】考试重点、难点和常考题型:?随机变量及其分布...
  18. AI 模型社区“魔搭”亮相,平头哥又上新,端云一体生态再升级
  19. 七夕情人节表白网页代码HTML 教你如何制作浪漫的表白网站
  20. P13 正交向量和正交子空间【线性代数】

热门文章

  1. C语言字符串大小写转换_只愿与一人十指紧扣_新浪博客
  2. 干货|(DL~3)deep learning中一些层的介绍
  3. SOLO:一次性预测语义类别和实例掩码
  4. 第五篇:并发控制-隔离
  5. 链表问题8——将单向链表按某值划分成左边小、中间相等、右边大的形式(进阶)
  6. 浏览器从输入url到页面加载完成发生了什么
  7. rabbitmq利用死信队列+TTL 实现延迟队列
  8. MongoDB中mapReduce的使用
  9. 抽点时间让我们一起来学linux系统
  10. SQLite第三课 源码编译错误以及解决