一、JDBC

1、JDBC的编程特点

静态代码+动态变量 = jdbc编程。在spring中动态变量可以用注入的形式给予。这样的编程方式适合包装成模板。静态代码构成了模板,而动态变量则是需要传入的参数。

2、Spring引入JDBC

配置文件中配置数据库的连接

1
2
3
4
5
6
7
8
9
<!--
       配置dbcp的数据库连接池
   -->
   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
       <property name="driverClassName" value="com.mysql.jdbc.Driver" />
       <property name="url" value="jdbc:mysql://localhost:3306/hibernate0909" />
       <property name="username" value="root" />
       <property name="password" value="root" />
   </bean>

配置好后,我们就可以在客户端进行连接了,下面说些JdbcTemplate的事情。

首先我们看下JdbcTemplate类,我们找到第一个划红圈的地方,就是我们在spring中配置的DataSource注入到JdbcTemplate中,我们就可以使用JdbcTemplate模板了。

JdbcTemplate把所有的对数据库的操作都封装在了一起,第二个红圈就是我们想要的结果,这样省去了我们自己写的函数了,很像是别人写的类我们直接拿来用一样。。。。

那我们怎样把DataSource传递给JdbcTemplate呢?

下面我们看看这些相关的类是怎样调用的,也就是怎样依赖注入的

这样我们就可以看出来他们的关系了,那我们就可以很直接的在客户端将DataSource注入到JdbcTemplate中了

下面介绍三种方案来进行注入。。。

(1)客户端通过继承JdbcDaoSupport来进行注入

在JdbcDaoTemplate中有个setDataSource的set方法我们就可以注入datasource

然后调用createJdbcTemplate

之后在调用JdbcTemplate

这样才真正的传入datasource了,相关的配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!--
       配置dbcp的数据库连接池
   -->
   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
       <property name="driverClassName" value="com.mysql.jdbc.Driver" />
       <property name="url" value="jdbc:mysql://localhost:3306/hibernate0909" />
       <property name="username" value="root" />
       <property name="password" value="root" />
   </bean>
    
   <bean id="personDao" class="cn.itcast.spring0909.jdbc.PersonDaoImpl">
       <property name="dataSource">
           <ref bean="dataSource"/>
       </property>
   </bean>

(2)直接引入JdbcTemplate就行了

相关的配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource">
        <ref bean="dataSource"/>
    </property>
</bean>
 
<bean id="personDao2" class="cn.itcast.spring0909.jdbc.PersonDaoImpl2">
    <property name="jdbcTemplate">
        <ref bean="jdbcTemplate"/>
    </property>
</bean>

(3)直接继承JdbcTemplate,通过构造函数向他的父类中传入datasource

相关的配置文件如下:

1
2
3
<bean id="personDao3" class="cn.itcast.spring0909.jdbc.PersonDaoImpl2">
    <constructor-arg index="0" ref="dataSource"></constructor-arg>
</bean>

二、RowMapper的使用

 可以通过建立内部类实现RowMapper接口,RowMapper中有一个mapRow方法,所以实现RowMapper接口一定要实现mapRow方法,而对自定义类的包装就在mapRow方法中实现.

下面说下他的原理是什么样的。。。就像我们自己写的RowMapper接口一样,只是spring中已经封装好了此类。

Spring自学教程-jabc编程详解、RowMapper使用(三)的更多相关文章

  1. Spring AOP面向切面编程详解

    前言 AOP即面向切面编程,是一种编程思想,OOP的延续.在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等等.在阅读本文前希望您已经对Spring有一定的了解 注:在能对代码进行添 ...

  2. ORACLE PL/SQL编程详解

    ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...

  3. Spring Boot的启动器Starter详解

    Spring Boot的启动器Starter详解 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs Spring Boot ...

  4. Spring Boot 之使用 Json 详解

    Spring Boot 之使用 Json 详解 简介 Spring Boot 支持的 Json 库 Spring Web 中的序列化.反序列化 指定类的 Json 序列化.反序列化 @JsonTest ...

  5. 【Qt】Qt Quick 之 QML 与 C++ 混合编程详解

    Qt Quick 之 QML 与 C++ 混合编程详解 - CSDN博客   专栏:Qt Quick简明教程 - CSDN博客   .

  6. Spring 入门 web.xml配置详解

    Spring 入门 web.xml配置详解 https://www.cnblogs.com/cczz_11/p/4363314.html https://blog.csdn.net/hellolove ...

  7. Spring学习 6- Spring MVC (Spring MVC原理及配置详解)

    百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...

  8. 《挑战30天C++入门极限》入门教程:实例详解C++友元

        入门教程:实例详解C++友元 在说明什么是友元之前,我们先说明一下为什么需要友元与友元的缺点: 通常对于普通函数来说,要访问类的保护成员是不可能的,如果想这么做那么必须把类的成员都生命成为pu ...

  9. Qt零基础教程(四) QWidget详解篇

    在博客园里面转载我自己写的关于Qt的基础教程,没次写一篇我会在这里更新一下目录: Qt零基础教程(四) QWidget详解(1):创建一个窗口 Qt零基础教程(四) QWidget详解(2):QWid ...

随机推荐

  1. 【stack】模拟网页浏览 poj 1028

    #include<stdio.h> #include<string.h> int main() { ][]; ]; int i,depth; strcpy(s[]," ...

  2. json的学习笔记

    json比较简单,所以先从json开始学起. 一 json的名称: json的全称是javascript object notation,中文名称为js 对象表示法. json的定义:json是一种轻 ...

  3. cfedu/A/求和

    题目连接 思路: 用数组直接标记2^n,n属于(0~~31);用LL或者INT都可以,不会爆.但是ans要用LL. #include <set> #include <map> ...

  4. Jmeter的优点是什么?除了轻量级,它和LoadRunner有什么本质区别

    1.jmeter的架构和loadrunner原理一样,都是通过中间代理,监控和收集并发客户端发出的指令,把他们生成脚本,再发送到应用服务器,再监控服务器反馈结果的一个过程: 2.分布式中间代理功能在j ...

  5. toad执行存储过程

    选中存储过程,右键执行,根据存储过程中的sql语句,输入参数, 执行结果的out值点击connection output,鼠标放在statement标签,就会显示下边的out值. 在db2cmd下执行 ...

  6. 《割绳子》《蜡笔物理学》《Contre Jour》《顽皮鳄鱼爱洗澡》等游戏用Box2D引擎实现物理部分的方法(转)

    从最热门游戏排行榜和flash游戏网站上,你能看到什么?许多2D游戏都有非常出色的物理学和美术设计.现在我们要学习那些游戏使用了什么物理学以及如何用Box2D制作它们. 除了知道是“什么”,更重要的是 ...

  7. 《JavaScript高级程序设计》读书笔记 ---变量

    ECMAScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据.换句话说,每个变量仅仅是一个用于保存值的占位符而已.定义变量时要使用var 操作符(注意var 是一个关键字),后 ...

  8. Linux学习 -- Shell基础 -- Bash变量

    变量 默认是字符串型,数值型需要显示指定 等号两侧都不能有空格 单引号:原始字符串  双引号:保留转义 命令结果作为值:反引号 或 $() 环境变量一般用大写 自定义变量 变量定义    name=& ...

  9. Light OJ 1006 - Hex-a-bonacci

    题目链接:http://acm.hust.edu.cn/vjudge/contest/121396#problem/G http://lightoj.com/volume_showproblem.ph ...

  10. Ubuntu 9.10+ apache2.2 +Django的配置

    1.首先安装mod_python apt-get install libapache2-mod-python2.6 (Ubuntu 9.10默认安装的是python 2.6版,如果是2.5可改为 li ...