JdbcTemplete类层次结构

  • JdbcAccessor:对DataSource数据源进行管理和配置;
  • JdbcOperations:定义了通过JDBC操作数据库的基本操作方法;

  • JdbcTemplate:提供了实现JdbcOperations接口方法的细节;

JdbcTemplate中模板方法设计模式的使用

模板方法设计模式:模板方法中定义算法的基本骨架,由子类在实现其中的一些细节。
在jdbc访问数据库时,需要创建和维护、销毁Connection、Statement,以及处理SqlException等,如下所示:

从上面可以看出,所有的数据库操作,都有一个固定的套路,为了避免重复代码,JdbcTemplate使用模板方法设计模式,将数据库访问中涉及到的不变部分放在JdbcTemplate中,而将变化的部分(比如sql语句)放到Callback中;
JdbcTemplate中的execute()就是模板方法

从上面的代码中,可以看到,创建Connection和Statement,以及处理exception、释放资源等,都是固定的,具体的sql都是变化的部分,都放在Callback中。
下面以query为例进行介绍:
下面在看一个update的例子:

JdbcTemplate中的Callback

主要有3个:

  1. Statement;
  2. CallableStatement;
  3. PreparedStatement;
每种Statement都有自己对应的execute()方法,都是模板方法,且实现细节基本相同;
每种execute()方法中的Callback函数,分别对应上面3种;

JdbcTemplate的query()
JdbcTemplate中的query方法,使用的基本都是preparedStatement

JdbcTemplate方法概览

查询方法主要分为如下几大类:
  • query()
  • queryForList()
  • queryForMap()
  • queryForMap()
  • queryForRowSet()
而上面的每一种,基本又可以分为3类,分别为:
  1. ResultSetExtractor<T> :
  2. RowCallbackHandler
  3. RowMapper<T>



【JdbcTemplete】JdbcTemplete代码详解--模板方法详解的更多相关文章

  1. “全栈2019”Java多线程第十八章:同步代码块双重判断详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  2. Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)

    这篇博客 是在Scala IDEA for Eclipse里手动创建scala代码编写环境. Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群模式) ...

  3. 用maven来创建scala和java项目代码环境(图文详解)(Intellij IDEA(Ultimate版本)、Intellij IDEA(Community版本)和Scala IDEA for Eclipse皆适用)(博主推荐)

    不多说,直接上干货! 为什么要写这篇博客? 首先,对于spark项目,强烈建议搭建,用Intellij IDEA(Ultimate版本),如果你还有另所爱好尝试Scala IDEA for Eclip ...

  4. Android 6.0 RK3288 ROM编译详解+命令详解【转】

    本文转载自:http://blog.csdn.net/MLQ8087/article/details/58607692 Android 6.0 RK3288 ROM编译详解+命令详解 原创 2017年 ...

  5. linux tar命令 压缩、打包、解压 详解

    linux tar命令 压缩.打包.解压 详解 1.常用压缩命令 tar –czvf 压缩后的文件.tar.gz 要压缩的文件 2.常用解压命令 tar –xzvf 解压后的文件.tar.gz [要解 ...

  6. 安卓平台 全面支持软解和硬解的SDK-Demo源代码开放

    专业做视频编解码的SDK开发工作. 2015年12月1日10:46:55: 更新到1.5.0版本 功能列表: 基本播放: 1,正常播放, 支持MP4,FLV,AVI,TS,3GP,RMVB,WM,WM ...

  7. 【转】GAMITBLOBK中固定解、浮点解、约束解、松弛解等解类型解释

    在GAMIT/GLOBK的使用过程中,经常会碰到固定解.浮点解.约束解.松弛解及其相关组合解(如约束固定解)等词汇,对于初学者,一时难以弄明白其中的含义,一般只有按部就班按照教程中,怎么说就怎么弄,不 ...

  8. dict字典常用方法总结,数据解构(解包)

    dict {'name':'holle'}字典存储大量关联型数据,可迭代的,最多只有200个键.查询数据速度非常快,符合二分查找(有100个数比如找75会先找到50然后判断,所以2^7次方7次即可找到 ...

  9. mybatis-generator:generate 生成代码配置踩坑详解

    mybatis-generator:generate 生成代码配置踩坑不少,在此留下笔记以便后续填坑 一.mysql返回时间问题 错误信息: [ERROR] Failed to execute goa ...

随机推荐

  1. KVO的简单用法

    KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知.简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了 ...

  2. NAT(未验证,后续见Linux服务器架构篇)

    通常小型企业或是学校单位大多数仅有一条对外的联机,然后全公司内的计算机全部通过这条联机连到因特网上,此时我们更需使用IP分享器来让这一条对外联机分享给所有公司内部员工使用,那么Linux能不能达到此一 ...

  3. DB2中的ROW_NUMBER() OVER()函数用法

      ROW_NUMBER() OVER()大概有俩方面的作用 1,分页, 并返回分页结果集.2,是对数据进行处理 分组 db2的分页: select tmp.* from ( SELECT rownu ...

  4. 110. Balanced Binary Tree

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

  5. js confirm用法

    <script> $('.tzshanchu').click(function(){ if(confirm('是否确认删除')){ alert('删除了') } });</scrip ...

  6. Makefile---make内嵌函数及make命令显示 (九)

    原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 这一节我们讲一下make的函数,在之前的章节已经讲到了几个函数:wildcard.patsubs ...

  7. Codeforces Round #122 (Div. 2)

    A. Exams 枚举分数为3.4.5的数量,然后计算出2的数量即可. B. Square 相当于求\(\min{x(n+1)\ \%\ 4n=0}\) 打表发现,对\(n\ \%\ 4\)分类讨论即 ...

  8. hihoCoder#1107 : Shortest Proper Prefix (前缀树)

    题目大意:在n个单词中,如果以s作为前缀的单词个数不超过5个,那么称s为proper prefix.如果s为proper prefix并且s的任何一个前缀(不包括s)都不是proper prefix, ...

  9. java的nio之:java的nio系列教程之buffer的概念

    一:java的nio的buffer==>Java NIO中的Buffer用于和NIO通道Channel进行交互.==>数据是从通道channel读入缓冲区buffer,从缓冲区buffer ...

  10. memory dump and CLR Inside Out

    MSDN Magazine: CLR Inside Out https://msdn.microsoft.com/en-us/magazine/cc501040.aspx CLR Inside Out ...