转自:http://vsp.iteye.com/blog/1182887

Spring对jdbc做了良好的封装,本人在学习时做了以下几种方式的尝试 
首页先来创建一个dao接口

  1. package com.wys.dao;
  2. public interface IUserDao {
  3. void save();
  4. }

第一种方式通过继承JdbcDaoSupport来获取JdbcTemplate,需要注入JdbcTemplate

  1. package com.wys.dao.impl;
  2. import java.util.Map;
  3. import org.springframework.jdbc.core.support.JdbcDaoSupport;
  4. import com.wys.dao.IUserDao;
  5. public class UserDaoImpl extends JdbcDaoSupport implements IUserDao {
  6. @Override
  7. public void save() {
  8. String sql = "**********";
  9. Map<String,?> map = this.getJdbcTemplate().queryForMap(sql);
  10. System.out.println("成功!");
  11. }
  12. }

配置文件如下:

  1. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  2. <property name="dataSource" ref="dataSource" />
  3. </bean>
  4. <bean id="userImpDao" class="com.wys.dao.impl.UserDaoImpl">
  5. <property name="jdbcTemplate" ref="jdbcTemplate" />
  6. </bean>

JdbcTemplate提供了众多的对数据库操作的方法 
第二种方法是组合JdbcTemplate,因为JdbcTemplate的创建需要注入DataSource,所以这里只需要直接注入DataSource就可以

  1. package com.wys.dao.impl;
  2. import java.util.Map;
  3. import javax.sql.DataSource;
  4. import org.springframework.context.ApplicationContext;
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;
  6. import org.springframework.jdbc.core.JdbcTemplate;
  7. import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
  8. import org.springframework.jdbc.core.support.JdbcDaoSupport;
  9. import com.wys.dao.IUserDao;
  10. public class UserDao2Impl implements IUserDao {
  11. private JdbcTemplate jdbcTemplate;
  12. @Override
  13. public void save() {
  14. String sql = "******";
  15. Map<String,?> map = this.jdbcTemplate.queryForMap(sql);
  16. System.out.println("成功!");
  17. }
  18. //注入DataSource
  19. public void setDataSource(DataSource dataSource) {
  20. jdbcTemplate = new JdbcTemplate(dataSource);
  21. }
  22. }

配置文件

  1. <bean id="userImpl2Dao" class="com.wys.dao.impl.UserDao2Impl">
  2. <property name="dataSource" ref="dataSource" />
  3. </bean>

第三种方法是继承SimpleJdbcDaoSupport,通过SimpleJdbcDaoSupport可以获取SimpleJdbcTemplate,SimpleJdbcTemplate里也提供了大量的操作数据库的方法,因为SimpleJdbcDaoSupport继承了JdbcDaoSupport,所有可以获得JdbcTemplate,JdbcTemplate相对SimpleJdbcTemplate提供了更多和更高级的一些操作的方法,根据需要来使用,这里只需要直接注入JdbcTemplate,因为SimpleJdbcTemplate是通过JdbcTemplate来创建的

  1. package com.wys.dao.impl;
  2. import java.util.Map;
  3. import javax.sql.DataSource;
  4. import org.springframework.context.ApplicationContext;
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;
  6. import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
  7. import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
  8. import org.springframework.jdbc.core.support.JdbcDaoSupport;
  9. import com.wys.dao.IUserDao;
  10. public class UserDao3Impl extends SimpleJdbcDaoSupport implements IUserDao {
  11. @Override
  12. public void save() {
  13. String sql = "***";
  14. Map<String,Object> map = this.getSimpleJdbcTemplate().queryForMap(sql);//SimpleJdbcTemplate
  15. Map<String,Object> map2 = this.getJdbcTemplate().queryForMap(sql);//JdbcTemplate
  16. System.out.println("成功!");
  17. }
  18. }

配置如下:

  1. <bean id="userImpl3Dao" class="com.wys.dao.impl.UserDao3Impl">
  2. <property name="jdbcTemplate" ref="jdbcTemplate" />
  3. </bean>

第四种直接组合SimpleJdbcTemplate,因为SimpleJdbcTemplate的创建是需要DataSource的,所以需要注入DataSource

  1. package com.wys.dao.impl;
  2. import java.util.Map;
  3. import javax.sql.DataSource;
  4. import org.springframework.context.ApplicationContext;
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;
  6. import org.springframework.jdbc.core.JdbcTemplate;
  7. import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
  8. import org.springframework.jdbc.core.support.JdbcDaoSupport;
  9. import com.wys.dao.IUserDao;
  10. public class UserDao4Impl implements IUserDao {
  11. private SimpleJdbcTemplate jdbcTemplate;
  12. @Override
  13. public void save() {
  14. String sql = "******";
  15. Map<String,?> map = this.jdbcTemplate.queryForMap(sql);
  16. System.out.println("成功!");
  17. }
  18. public void setDataSource(DataSource dataSource) {
  19. jdbcTemplate = new SimpleJdbcTemplate(dataSource);
  20. }
  21. }

配置文件:

  1. <bean id="userImpl4Dao" class="com.wys.dao.impl.UserDao4Impl">
  2. <property name="dataSource" ref="dataSource" />
  3. </bean>

第五种方法也是组全JdbcTemplate,直接注入JdbcTemplate,而不是DataSource ,因为在JdbcTemplate中已经注入了DataSource

  1. package com.wys.dao.impl;
  2. import java.util.Map;
  3. import javax.sql.DataSource;
  4. import org.springframework.context.ApplicationContext;
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;
  6. import org.springframework.jdbc.core.JdbcTemplate;
  7. import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
  8. import org.springframework.jdbc.core.support.JdbcDaoSupport;
  9. import com.wys.dao.IUserDao;
  10. public class UserDao5Impl implements IUserDao {
  11. private JdbcTemplate jdbcTemplate;
  12. public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
  13. this.jdbcTemplate = jdbcTemplate;
  14. }
  15. @Override
  16. public void save() {
  17. String sql = "*****";
  18. Map<String,?> map = this.jdbcTemplate.queryForMap(sql);
  19. System.out.println("成功!");
  20. }
  21. }

配置如下

  1. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  2. <property name="dataSource" ref="dataSource" />
  3. </bean>
  4. <bean id="userImpl5Dao" class="com.wys.dao.impl.UserDao5Impl">
  5. <property name="jdbcTemplate" ref="jdbcTemplate" />
  6. </bean>

其实方法还有很多种,关键是看你是需要继承还是组合,需要注入的对象是什么!

[转] SpringJdbc的几种不同的用法的更多相关文章

  1. SharedPreferences 的另一种场景的用法

    SharedPreferences 的另一种场景的用法 昨天,下班在家想做什么来着,然后想用SharedPreferences存点数据,但是不知道咋地突然想到,SharedPreferences是应用 ...

  2. [转]jQuery的each方法的几种常用的用法

    下面提一下jQuery的each方法的几种常用的用法 复制代码 代码如下:  var arr = [ "one", "two", "three&quo ...

  3. 避免常见的6种HTML5错误用法

    一.不要使用section作为div的替代品 人们在标签使用中最常见到的错误之一就是随意将HTML5的<section>等价于<div>——具体地说,就是直接用作替代品(用于样 ...

  4. Java 枚举(enum) 详解7种常见的用法

    Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...

  5. 一直被用错的6种SQL 错误用法

    一直被用错的6种SQL 错误用法 1.LIMIT 语句 2.隐式转换 3.关联更新.删除 4.EXISTS语句 5.条件下推 6.提前缩小范围 sql语句的执行顺序: FROM ON JOIN WHE ...

  6. MySQL常见的8种SQL错误用法

    MySQL常见的8种SQL错误用法 前言 MySQL在2016年仍然保持强劲的数据库流行度增长趋势.越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来.但也 ...

  7. C++中三种new的用法

    转载自:http://news.ccidnet.com/art/32855/20100713/2114025_1.html 作者: mt 1 new operator,也叫new表达式:new表达式比 ...

  8. asp.net中的<%%>的几种形式的用法

    转自:http://blog.csdn.net/wang379275614/article/details/9625911 在asp.net中经常出现包含这种形式<%%>的html代码,总 ...

  9. PLSQL 几种游标的用法

    分类: Oracle 1. PL/SQL里的游标可以分为显式和隐式两种,而隐式有分为select into隐式游标和for .. in 隐式游标两种.所以,我们可以认为,有3种游标用法: A. 显式游 ...

随机推荐

  1. androidstudio 问题

    Error:(1, 1) A problem occurred evaluating project ':app'. > Failed to apply plugin [id 'com.andr ...

  2. iOS中的代理和Block

    一.代理(Delegate) 1)含义 iOS中的代理,比如父母要去上班,到中午12点了,需要给宝宝喂饭吃,但是父母正在上班,这时需要有一个人来帮忙完成一些事情(需要有个保姆来帮忙给宝宝喂饭),此时, ...

  3. linux 查看 cpu 和内存的命令 - top

    1.查看内存,cpu ,当前进程task数目, 每个进程的cpu, 内存使用率, 用top 命令: 在这个页面,按 P,下面的进程排序,以cpu使用率降序排列. 按M,按内存使用率降序排列: 按N, ...

  4. idea 端口占用

    netstat -anp | grep 8080 lsof -i:8080 查看8080端口被什么进程占用 kill (-s 9) 12903 -s 9 强制 尽快 12903 上面查出的 PID 其 ...

  5. ignite中的消息使用实例

    消息很简单,跟其他的mq相仿,关键点: 一,添加监听,订阅主题 二,发送消息 写了一个简单的示例: Receiver.java package test.ignite.broadcast; impor ...

  6. 简单的git入门介绍及常用操作

    集中式版本控制系统采用中央服务器上存储的所有文件和实现团队协作.但是CVCS主要缺点是中央服务器的单点故障,即故障.不幸的是,如果中央服务器宕机一小时,然后在该时段没有人可以合作.即使在最坏的情况下, ...

  7. 取消svn版本控制

    删除项目中的版本控制,即删除项目文件夹下的所有.svn文件夹(在做项目的时候,有时候想把项目拷回去看看,但是文件太大了,而且压缩起来很慢.这主要是因为在项目中有大量的.svn文件夹.所以才想把.svn ...

  8. acm课程练习2--1002

    题目描述 Now, here is a fuction:  F(x) = 6 * x^7+8x^6+7x^3+5x^2-yx (0 <= x <=100)Can you find the ...

  9. hdu1501 Zipper

    Zipper Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submis ...

  10. 获取spring bean的utils

    <span style="font-size:10px;">package com.record.util; import org.springframework.be ...