使用spring 的 JdbcTemplate 进行sql 的操作, 对于每一次的如:query, update, batchUpdate,execute 这些方法, 执行一次都是调用不同的 Connection的.

所以如果你是对 oracle 的临时表进行数据操作, 你update一次后, 在query 是读取不到临时表的数据的, 因为这两次的操作对应的Connection是不同的.

为了能使用oracle 的临时表, 就需要对每个操作提供一个相同 Connection, 以后的所有操作都跟这个 Connection产生的 Statement, PreparedStatement, CallableStatement 相关, 并且通过这些对象的getConnection() 方法也可以很容易就取得原来的 connection 对象.

由于以前没用过Spring  的 JdbcTemplate, 所以边工作的时候边查询 JdbcTemplate 的源代码, 写写一些小功能测试.

其实JdbcTemplate 里面很多方法的返回的结果都是用到了 execute() 这个方法的, 所以用获取同一个 Connection 对象, 就要从 execute() 入手.

1. execute(ConnectionCallback action)

在JdbcTempate 的execute() 方法里面,

//-------------------------------------------------------------------------

// Methods dealing with a plain java.sql.Connection

//-------------------------------------------------------------------------

public Object execute(ConnectionCallback action) throws DataAccessException;

在这个方法里面接口 ConnectionCallback 定义如下

public interface ConnectionCallback {

Object doInConnection(Connection con) throws SQLException, DataAccessException;

}

在接口 ConnectionCallback  中声明的方法Object doInConnection(Connection con) 中提供了参数 Connection conn, 这个刚好就是我们所需要的.  我们在实现 doInConnection(Connection con)  方法的过程中, 就可以自由使用 Connection conn.

2. 实现 ConnectionCallback  的方法有两种

java oracle临时表,JdbcTemplate操作oracle的临时表相关推荐

  1. java mysql nclob_java语言操作Oracle数据库中的CLOB数据类型 (转)

    java语言操作Oracle数据库中的CLOB数据类型 (转)[@more@] 有关字段类型的相关信息可以查阅oracle技术网.下面摘抄一些有关blob.clob等类型的说明.又便于大家的了解. 字 ...

  2. java 批量入库oracle_java操作Oracle数据库——ARRAY、TABLE类型批量入库

    首先是我的数据库表(PLSQL操作) create table TEST_TABLE ( yid      NUMBER, ytel     VARCHAR2(50), yanumber VARCHA ...

  3. oracle中dml操作,Oracle的DML操作过程

    DML操作,Oracle所有进程配合执行的过程成! 用户将DML操作的语句通过进程传输给sga中的buffer cache,然后在buffer cache中对所更改的数据块进行更新操作,然后首先由lo ...

  4. python如何操作oracle数据库_Python 操作 Oracle 数据库

    前言 操作系统:Window 10 64 位 RPA: IS-RPA 2020.2.0 查看 IS-RPA Python 版本 由下图可知: IS-RPA 安装在 E 盘,Python 解释器所在的目 ...

  5. 在oracle中游标的操作,Oracle中的游标和函数详解

    Oracle中的游标和函数详解 1.游标 游标是一种 PL/SQL 控制结构:可以对 SQL 语句的处理进行显示控制,便于对表的行数据 逐条进行处理. 游标并不是一个数据库对象,只是存留在内存中. 操 ...

  6. jdbc 执行oracle命令,JDBC操作oracle

    JDBC (java DataBase Connection)java数据库连接 使用jdbc使用java.sql包下的常用的几个接口: Connection 用于获得数据库的连接 Statement ...

  7. python调用oracle数据库_python操作oracle数据库

    # -*- mode: python; coding: utf-8 -*- # # python operate oracle, contain insert.delete.update.select ...

  8. python如何操作oracle数据库_python操作oracle数据库

    搜索热词 下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. # -*- mode: python; coding: utf-8 -*- # ...

  9. oracle 函数插入操作,Oracle函数内部运用insert插入

    Oracle函数内部使用insert插入 create or replace function GET_PRODUCT_ID_BY_NAME(productName varchar2) return ...

最新文章

  1. Django 无法添加新字段,django.db.utils.OperationalError: (1050, Table app already exists)
  2. bzoj1433: [ZJOI2009]假期的宿舍
  3. LaTeX:公式及编号
  4. jmeter启动报错 Error occurred during initialization of VM Could not reserve enough space for object heap
  5. matlab二元一次方程求解_2-函数的求解计算
  6. windows7系统屏幕一直闪屏的解决教程
  7. 基于生命周期理论的农业科学数据中心化管理模式
  8. codeblocks和vscode编译时弹出不支持的16位程序解决方案
  9. php下载隐藏,php – 隐藏下载URL
  10. JY游戏之毁经典《扫雷》
  11. grub引导U盘(集成常用工具/深山红叶PE工具箱V30/完美者U盘维护系统V8.1)
  12. https://blog.csdn.net/gyming/article/details/46611369
  13. 航空订票系统java_航空订票系统(JAVA+SSH+MYSQL)
  14. java gps_用Java解析GPS经纬度
  15. java项目根目录_获取java项目的根目录
  16. uni-app 从本地项目选择图片或使用相机拍照及图片预览
  17. 加密货币涨跌的原理到底是什么?
  18. android studio官方教程 pdf,android studio教程pdf
  19. Kubernetes 为何称为 K8s?
  20. android gamed,先游DGame

热门文章

  1. 使用git pull文件时和本地文件冲突怎么办
  2. Spring组件扫描context:component-scan/使用详解
  3. 无法加载 DLL“oramts.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)
  4. python机器学习库xgboost——xgboost算法(有分类和回归实例)
  5. Laravel 队列:如何查看队列报错信息
  6. PHP的str_split分割字符串成数组
  7. Linux配置apache虚拟主机:静态文件
  8. Oracle数据库用户失效对象,Oracle数据库对象失效解决
  9. 微信小程序之redirectTo、switchTab和navigateTo
  10. linux中vi大括号enter缩进,格式 – 如何在vi中对齐代码(大括号,括号等)?