[转] SpringJdbc的几种不同的用法

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

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

Java代码  

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

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

Java代码  

  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. }

配置文件如下:

Java代码  

  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就可以

Java代码  

  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. }

配置文件

Java代码  

  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来创建的

Java代码  

  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. }

配置如下:

Java代码  

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

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

Java代码  

  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. }

配置文件:

Java代码  

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

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

Java代码  

  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. }

配置如下

Java代码  

  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>

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

时间: 2024-11-08 19:05:35

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

Eclipse中SVN的安装步骤(两种)和用法

一.给安装EclipseSVN,最常见的有两种方式:手动方式和使用安装向导方式.详细过程例如以下: 方式一:手动安装 1.从官网下载site-1.6.9.zip文件,网址是:subclipse.tigris.org2.从中解压出features与plugins目录,拷贝到E:/MyEclipse/myPlugin/svn里面,其他的*.xml文件不要.3.在E:/MyEclipse/MyEclipse X.X/dropins下新建文件svn.link,内容是:path=E://MyEclipse

SharedPreferences 的另一种场景的用法

SharedPreferences 的另一种场景的用法 昨天,下班在家想做什么来着,然后想用SharedPreferences存点数据,但是不知道咋地突然想到,SharedPreferences是应用启动时一次性加到内存里的.适合少量的存储,多的话还是用数据库吧.实际项目中都是数据库,我私下写写demo就不搞那么麻烦了=.= 然后,问题来了,如果我要使用SharedPreferences,如何在比较小的单位里存储更多的信息. 好了,正题. 1. 昨天谷歌提供了国内的 android develo

springJDBC的几种方法

1.简单粗暴,直接在类中创建连接池使用 1 package com.xiaostudy; 2 3 import org.apache.commons.dbcp.BasicDataSource; 4 import org.springframework.jdbc.core.JdbcTemplate; 5 6 /** 7 * @desc 测试类 8 * 9 * @author xiaostudy 10 * 11 */ 12 public class Test { 13 14 public stati

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

一直被用错的6种SQL 错误用法 1.LIMIT 语句 2.隐式转换 3.关联更新.删除 4.EXISTS语句 5.条件下推 6.提前缩小范围 sql语句的执行顺序: FROM ON JOIN WHERE GROUP BY HAVING SELECTDISTINCT ORDER BY LIMIT 1.LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引.

STM32 一种参数检查用法介绍

STM32 一种参数检查用法介绍 assert_param()是一个在代码中很常见的写法,这个函数的功能一般是对函数参数的合法性进行检查,这里以一个例子进行分析: assert_param(IS_GPIO_ALL_PERIPH(GPIOx)) 函数的参数是IS_GPIO_ALL_PERIPH(GPIOx),原型为: #define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || ((PERIPH) == GPIOB) || ((PERIPH)

C++中三种new的用法

转载自:http://news.ccidnet.com/art/32855/20100713/2114025_1.html 作者: mt 1 new operator,也叫new表达式:new表达式比较常见,也最常用,例如: string* ps = new string("abc"); 上面这个new表达式完成了两件事情:申请内存和初始化对象. 2 operator new,也叫new操作符.这两个英文名称起的也太绝了,很容易搞混,那就记中文名称吧.new操作符类似于C语 言中的ma

NSSrting的几种常用的用法

1.创建NSString字符串 NSString 与 char* 最大的区别就是 NSString是一个objective对象,而char* 是一个字节数组.@+" 字符串 " 这个符号为objective-c NSString 字符串常量的标准用法,char* 创建的时候 无需添加@ - (void)viewDidLoad [super viewDidLoad]; //经典的字符串赋值 NSString *str0 = @"my name is justcoding !&q

C#中Dictionary泛型集合7种常见的用法

要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib)  Dictionary的描述1.从一组键(Key)到一组值(Value)的映射,每一个添加项都是由一个值及其相关连的键组成 2.任何键都必须是唯一的 3.键不能为空引用null(VB中的Nothing),若值为引用类型,则可以为空值 4.Key和Value可以是任何类型(string,int,custom class 等) Dictionary常用用法:以

vim 的三种模式的用法

vim的三种模式一般模式 在这个模式下,可以:上下移动光标,删除某个字符,删除某行,复制.粘贴一行或者多行. 一般模式下的光标移动 h或者向左方向键 光标向左移动一个字符 l或者向右方向键 光标向右移动一个字符 k或者向上方向键 光标向上移动一个字符 j或者向下方向键 光标向下移动一个字符 Ctrl+f或pageup键 屏幕向前移动一页 Ctrl+b或pagedown键 屏幕向后移动一页 数字0或者Shift + 6 移动到本行行首 Shift + 4 移动到本行行尾 gg 移动到首行 G 移动