编写 TxQueryRunner 配合 JdbcUtils 来处理事务| 学习笔记

简介: 快速学习编写 TxQueryRunner 配合 JdbcUtils 来处理事务

开发者学堂课程【JDBC 数据库开发进阶编写 TxQueryRunner 配合 JdbcUtils 来处理事务】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/32/detail/693


编写 TxQueryRunner 配合 JdbcUtils 来处理事务

 

如果开启事务,说明开启的事务专属链接。这个链接对象应该关闭。

没有关闭,资源用尽。如果是事务专用就不用关闭。不是事务专用,就需要关闭。

判断标准

如果( con== null,说明现在没有事务,那么 connect ion 一定不是事务专用!)

如果con= null,说明有事务,那么需要判断参数连接是否与 con 相等,若不等,说明参数连接不是事务专用连接。

怎么释放连接

重写方法

这个类中的方法,自己处理连接的问题

无需外届传递

处理方法

通过 JdbcUtils.getConnection() 得到连接。有可能是事务连接,也可能是普通连接!

JdbcUtils.releaseConnection() 完成对外连接的释放!如果是普通连接,关闭之!

1.得到连接

2.执行父类方法,传递连接对象

3.释放连接

4.返回值

public class xXService()

private XXXDao dao new XXXDao();

public void serviceMethod(

try(-

JdbcUtils beginTransaction():

dao... ...

dao.daoMethod2(...

ldbcUtils.commit  transaction()

catch(Exception e)

JdbcUtils rollbackTransaction():

 

package cn.itcaat.jdbe;

import java.. SQLException;

publie elass Demo1

private AccountDao dao new AccountDao()

publia void aerviceMethod()[

try

Jdbeutils. commitTransactioni

catch (Exception e){

try

JdbcUtils. rollbackTransaction()

catah (SQLException e1)(

 

package cn.itcast.;

-import ava. aq1. Connection;

import java.. SQLException;

import org. apache.commons.dloutila.QueryRunner;

public class AccountDao

public static void update (string name, double money) throws SQLException

QueryRunner gr new QueryRu();

string aql ="update account set balance=balance+? where name=?";

object [ params [money, namel

/我们需要自己来提供连接,保证多次调用使用的是同一个连接!

Connection con JdbcUtilsgetconnection()

. update(con, aql, params);

I

Jdbeutils. releaseConnection(con);

1.jpg

 

 Connection con JdbcUtils. getconnection();

int[] result super. batch(con, sq1, params);

JdbcUtils. releasoConneotion(con);

return result;

GOverride

public  T query(string aql Cbject param, ResultSetHandler<> rah)

throws SQLException

Connection con JdbeUtils. getconneetion (

T reault auper. query(con, aql, param, rah);

Jdbeutils. relea seconnection(eon):

return reault;

@override

query(string sq1, objct[ params, ResultsetHandler<> rsh)

throws SQLException

Connection con JdbcUtils. getConnection()

T result super. epuesy(con, sq1, params, rsh);

JdbcUtila. roleaseConncotion(con);

return result;

Boverride

public <> query(string aql, ReaultsetHandler<> rahObject... parama)

throws SQLException

/ TODO Auto-generated- method atub

 

Connection con =Jabcutil3. getconnection(;

int result super. update(con, sg1)

JdbcUtila. releasaConneotion(con);

return result:

BOverride

public int update(String aq1, Object param) throws SQLException

Connection con JdbcUtils. getConnection();

int result super. update(con, agl, param);

JdbcUtils. releaseConnection(con);

return result;

I

eoverride

public int updatetring aql, Object... params throws SQLException

connection con =JdbeUtils. getconnection();

int reault super. update (con, agl, parama)

JdbeUtils. releaseConnection(con):

return reault;

 

package cn. itcaat.dbe;

import java.. connection;

import java. aq1. 8QLException;

import org.apache.commons.dlbutils.QueryRunner;

public class AccountDao

publie static void update( name, double money) throws SQLExcepti

QueryRunner gr new TxQueryRunner()

string aql "update account set balance=balance+? where name=";

Object[ params =[money, namel;

/我们需要自己来提供连接,保证多次调用使用的是同一个连接!

qr.update(, params)

相关文章
|
2月前
|
消息中间件 测试技术
项目环境测试问题之规范执行器的异常处理如何解决
项目环境测试问题之规范执行器的异常处理如何解决
|
4月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
62 3
|
SQL 缓存 Java
MyBatis核心源码深度剖析SQL执行过程
MyBatis核心源码深度剖析SQL执行过程
48 0
|
Java 数据库连接 数据库
高效掌握JDBC技术(三)| 三层架构理念 | 书写符合事务特性的工具类 | JUnit测试框架 | JDBC项目开发步骤(下)
高效掌握JDBC技术(三)| 三层架构理念 | 书写符合事务特性的工具类 | JUnit测试框架 | JDBC项目开发步骤
101 1
从源码层面解释:为什么执行MyBatis接口就可以执行SQL?
1:场景分析 在我们使用SpringBoot+MyBatis的时候,我们一般是先引入依赖,然后配置
|
SQL 数据可视化 关系型数据库
【JavaWeb篇】使用MyBatis简化JDBC开发|解决SQL语句警告的问题
【JavaWeb篇】使用MyBatis简化JDBC开发|解决SQL语句警告的问题
95 0
|
SQL XML IDE
Fluent Mybatis 牛逼!做到代码逻辑和sql逻辑的合一
Fluent Mybatis 牛逼!做到代码逻辑和sql逻辑的合一
293 0
Fluent Mybatis 牛逼!做到代码逻辑和sql逻辑的合一
|
SQL Java 数据库
oushudb-编程接口 - JDBC-执行语句
oushudb-编程接口 - JDBC-执行语句
68 0
|
SQL 存储 自然语言处理
MyBatis 学习笔记(八)---源码分析篇--SQL 执行过程详细分析
在面试中我们经常会被到MyBatis中 #{} 占位符与${}占位符的区别。大多数的小伙伴都可以脱口而出#{} 会对值进行转义,防止SQL注入。而${}则会原样输出传入值,不会对传入值做任何处理。本文将通过源码层面分析为啥#{} 可以防止SQL注入。
344 0
MyBatis 学习笔记(八)---源码分析篇--SQL 执行过程详细分析
|
SQL PHP 数据库
封装数据库操作类( SQL 执行检查)|学习笔记
快速学习封装数据库操作类( SQL 执行检查)
封装数据库操作类( SQL 执行检查)|学习笔记