Common DButils工具类

Common DButils工具类

老师为啥事物需要连接,而查询时不需要获取连接呢

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小蓝 2022-12-09 16:25:40

同学你好,事务控制是基于连接进行的,即控制事务的方法需要使用Connection对象,所以需要使用事务的时候必须先获取连接。

祝学习愉快~

  • 提问者 慕无忌4072121 #1

    那查询,不连接数据库也查不到数据啊,为啥这个查询不基于连接呢?

    2022-12-09 16:33:24
  • 好帮手慕小蓝 回复 提问者 慕无忌4072121 #2

    同学你好,查询也是需要连接的,只不过获取连接的动作在工具类内部完成了。

    在创建QueryRunner对象时,将DataSource作为参数进行了传入,而通过DataSource可以获取连接。源码如下图:

    https://img1.sycdn.imooc.com//climg/6392f4ba09735f6a13660386.jpg

    祝学习愉快~

    2022-12-09 16:41:32
  • 提问者 慕无忌4072121 回复 好帮手慕小蓝 #3

    老师您前面说query方法中里面有连接所以查询时不需要手动获取连接。我刚刚在试过如果是自动commit 的话,在update 方法里不用获取连接也能更改表中数据,课程中在update方法中要获取连接,是因为需要事物手动提交或者回滚需要Connection conn 对象用来获取,


    setAutoCommit 方法用来是否手动提交,或者回滚所以需要获取连接?

    而查询时不需要事物,所以不用获取连接而用query方法中自带获取连

    String sql1="update employee set salary=salary+500 where eno=?";
    String sql2="update employee set salary=salary-1000 where eno=?";
    QueryRunner qr = new QueryRunner(dataSource);
    int e1 = qr.update(sql1, new Object[]{100});
    int e2 = qr.update(sql1, new Object[]{101});


    2022-12-09 17:38:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师