SpringJdbc的几种不同的用法


Spring对jdbc做了良好的封装,本人在学习时做了以下几种方式的尝试
首页先来创建一个dao接口
Java代码 复制代码  收藏代码
  1. package com.wys.dao;  
  2.   
  3. public interface IUserDao {  
  4.     void save();  
  5. }  
package com.wys.dao;

public interface IUserDao {
	void save();
}



第一种方式通过继承JdbcDaoSupport来获取JdbcTemplate,需要注入JdbcTemplate
Java代码 复制代码  收藏代码
  1. package com.wys.dao.impl;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import org.springframework.jdbc.core.support.JdbcDaoSupport;  
  6.   
  7.   
  8. import com.wys.dao.IUserDao;  
  9.   
  10. public class UserDaoImpl extends JdbcDaoSupport implements IUserDao {  
  11.       
  12.       
  13.     @Override  
  14.     public void save() {  
  15.         String sql = "**********";  
  16.         Map<String,?> map = this.getJdbcTemplate().queryForMap(sql);  
  17.         System.out.println("成功!");  
  18.           
  19.     }  
  20.       
  21.       
  22.   
  23. }  
package com.wys.dao.impl;

import java.util.Map;

import org.springframework.jdbc.core.support.JdbcDaoSupport;


import com.wys.dao.IUserDao;

public class UserDaoImpl extends JdbcDaoSupport implements IUserDao {
	
	
	@Override
	public void save() {
		String sql = "**********";
		Map<String,?> map = this.getJdbcTemplate().queryForMap(sql);
		System.out.println("成功!");
		
	}
	
	

}


配置文件如下:
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>  
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource" />
	</bean>
	<bean id="userImpDao" class="com.wys.dao.impl.UserDaoImpl">
		<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>

JdbcTemplate提供了众多的对数据库操作的方法
第二种方法是组合JdbcTemplate,因为JdbcTemplate的创建需要注入DataSource,所以这里只需要直接注入DataSource就可以
Java代码 复制代码  收藏代码
  1. package com.wys.dao.impl;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import javax.sql.DataSource;  
  6.   
  7. import org.springframework.context.ApplicationContext;  
  8. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  9. import org.springframework.jdbc.core.JdbcTemplate;  
  10. import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;  
  11. import org.springframework.jdbc.core.support.JdbcDaoSupport;  
  12.   
  13.   
  14. import com.wys.dao.IUserDao;  
  15.   
  16. public class UserDao2Impl implements IUserDao {  
  17.       
  18.     private JdbcTemplate jdbcTemplate;  
  19.   
  20.       
  21.     @Override  
  22.     public void save() {  
  23.           
  24.         String sql = "******";        
  25.         Map<String,?> map = this.jdbcTemplate.queryForMap(sql);  
  26.           
  27.         System.out.println("成功!");  
  28.           
  29.           
  30.   
  31.     }  
  32.     //注入DataSource   
  33.     public void setDataSource(DataSource dataSource) {  
  34.         jdbcTemplate = new JdbcTemplate(dataSource);  
  35.     }  
  36.       
  37.           
  38.       
  39.   
  40. }  
package com.wys.dao.impl;

import java.util.Map;

import javax.sql.DataSource;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.jdbc.core.support.JdbcDaoSupport;


import com.wys.dao.IUserDao;

public class UserDao2Impl implements IUserDao {
	
	private JdbcTemplate jdbcTemplate;

	
	@Override
	public void save() {
		
		String sql = "******";		
		Map<String,?> map = this.jdbcTemplate.queryForMap(sql);
		
		System.out.println("成功!");
		
		

	}
	//注入DataSource 
	public void setDataSource(DataSource dataSource) {
		jdbcTemplate = new JdbcTemplate(dataSource);
	}
	
		
	

}



配置文件
Java代码 复制代码  收藏代码
  1. <bean id="userImpl2Dao" class="com.wys.dao.impl.UserDao2Impl">  
  2.         <property name="dataSource" ref="dataSource" />  
  3.     </bean>  
<bean id="userImpl2Dao" class="com.wys.dao.impl.UserDao2Impl">
		<property name="dataSource" ref="dataSource" />
	</bean>


第三种方法是继承SimpleJdbcDaoSupport,通过SimpleJdbcDaoSupport可以获取SimpleJdbcTemplate,SimpleJdbcTemplate里也提供了大量的操作数据库的方法,因为SimpleJdbcDaoSupport继承了JdbcDaoSupport,所有可以获得JdbcTemplate,JdbcTemplate相对SimpleJdbcTemplate提供了更多和更高级的一些操作的方法,根据需要来使用,这里只需要直接注入JdbcTemplate,因为SimpleJdbcTemplate是通过JdbcTemplate来创建的
Java代码 复制代码  收藏代码
  1. package com.wys.dao.impl;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import javax.sql.DataSource;  
  6.   
  7. import org.springframework.context.ApplicationContext;  
  8. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  9. import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;  
  10. import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;  
  11. import org.springframework.jdbc.core.support.JdbcDaoSupport;  
  12.   
  13.   
  14. import com.wys.dao.IUserDao;  
  15.   
  16. public class UserDao3Impl extends SimpleJdbcDaoSupport implements IUserDao {  
  17.       
  18.       
  19.       
  20.     @Override  
  21.     public void save() {  
  22.           
  23.         String sql = "***";       
  24.         Map<String,Object> map = this.getSimpleJdbcTemplate().queryForMap(sql);//SimpleJdbcTemplate  
  25.         Map<String,Object> map2 = this.getJdbcTemplate().queryForMap(sql);//JdbcTemplate  
  26.           
  27.                   
  28.         System.out.println("成功!");  
  29.   
  30.     }  
  31.       
  32.       
  33.       
  34.       
  35. }  
package com.wys.dao.impl;

import java.util.Map;

import javax.sql.DataSource;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.jdbc.core.support.JdbcDaoSupport;


import com.wys.dao.IUserDao;

public class UserDao3Impl extends SimpleJdbcDaoSupport implements IUserDao {
	
	
	
	@Override
	public void save() {
		
		String sql = "***";		
		Map<String,Object> map = this.getSimpleJdbcTemplate().queryForMap(sql);//SimpleJdbcTemplate
		Map<String,Object> map2 = this.getJdbcTemplate().queryForMap(sql);//JdbcTemplate
		
				
		System.out.println("成功!");

	}
	
	
	
	
}


配置如下:
Java代码 复制代码  收藏代码
  1. <bean id="userImpl3Dao" class="com.wys.dao.impl.UserDao3Impl">  
  2.         <property name="jdbcTemplate" ref="jdbcTemplate" />  
  3.     </bean>  
<bean id="userImpl3Dao" class="com.wys.dao.impl.UserDao3Impl">
		<property name="jdbcTemplate" ref="jdbcTemplate" />
	</bean>

第四种直接组合SimpleJdbcTemplate,因为SimpleJdbcTemplate的创建是需要DataSource的,所以需要注入DataSource
Java代码 复制代码  收藏代码
  1. package com.wys.dao.impl;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import javax.sql.DataSource;  
  6.   
  7. import org.springframework.context.ApplicationContext;  
  8. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  9. import org.springframework.jdbc.core.JdbcTemplate;  
  10. import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;  
  11. import org.springframework.jdbc.core.support.JdbcDaoSupport;  
  12.   
  13.   
  14. import com.wys.dao.IUserDao;  
  15.   
  16. public class UserDao4Impl implements IUserDao {  
  17.       
  18.     private SimpleJdbcTemplate jdbcTemplate;  
  19.   
  20.       
  21.     @Override  
  22.     public void save() {  
  23.           
  24.         String sql = "******";        
  25.         Map<String,?> map = this.jdbcTemplate.queryForMap(sql);  
  26.           
  27.         System.out.println("成功!");  
  28.           
  29.           
  30.   
  31.     }  
  32.       
  33.     public void setDataSource(DataSource dataSource) {  
  34.         jdbcTemplate = new SimpleJdbcTemplate(dataSource);  
  35.     }  
  36.       
  37.           
  38.       
  39.   
  40. }  
package com.wys.dao.impl;

import java.util.Map;

import javax.sql.DataSource;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.jdbc.core.support.JdbcDaoSupport;


import com.wys.dao.IUserDao;

public class UserDao4Impl implements IUserDao {
	
	private SimpleJdbcTemplate jdbcTemplate;

	
	@Override
	public void save() {
		
		String sql = "******";		
		Map<String,?> map = this.jdbcTemplate.queryForMap(sql);
		
		System.out.println("成功!");
		
		

	}
	
	public void setDataSource(DataSource dataSource) {
		jdbcTemplate = new SimpleJdbcTemplate(dataSource);
	}
	
		
	

}


配置文件:
Java代码 复制代码  收藏代码
  1. <bean id="userImpl4Dao" class="com.wys.dao.impl.UserDao4Impl">  
  2.         <property name="dataSource" ref="dataSource" />  
  3.     </bean>  
<bean id="userImpl4Dao" class="com.wys.dao.impl.UserDao4Impl">
		<property name="dataSource" ref="dataSource" />
	</bean>


第五种方法也是组全JdbcTemplate,直接注入JdbcTemplate,而不是DataSource ,因为在JdbcTemplate中已经注入了DataSource
Java代码 复制代码  收藏代码
  1. package com.wys.dao.impl;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import javax.sql.DataSource;  
  6.   
  7. import org.springframework.context.ApplicationContext;  
  8. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  9. import org.springframework.jdbc.core.JdbcTemplate;  
  10. import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;  
  11. import org.springframework.jdbc.core.support.JdbcDaoSupport;  
  12.   
  13.   
  14. import com.wys.dao.IUserDao;  
  15.   
  16. public class UserDao5Impl implements IUserDao {  
  17.       
  18.     private JdbcTemplate jdbcTemplate;  
  19.   
  20.       
  21.     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {  
  22.         this.jdbcTemplate = jdbcTemplate;  
  23.     }  
  24.   
  25.   
  26.   
  27.     @Override  
  28.     public void save() {  
  29.           
  30.         String sql = "*****";         
  31.         Map<String,?> map = this.jdbcTemplate.queryForMap(sql);         
  32.         System.out.println("成功!");  
  33.   
  34.     }         
  35.       
  36.       
  37. }  
package com.wys.dao.impl;

import java.util.Map;

import javax.sql.DataSource;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.jdbc.core.support.JdbcDaoSupport;


import com.wys.dao.IUserDao;

public class UserDao5Impl implements IUserDao {
	
	private JdbcTemplate jdbcTemplate;

	
	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}



	@Override
	public void save() {
		
		String sql = "*****";		
		Map<String,?> map = this.jdbcTemplate.queryForMap(sql);		
		System.out.println("成功!");

	}		
	
	
}



配置如下
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>  
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource" />
	</bean>
<bean id="userImpl5Dao" class="com.wys.dao.impl.UserDao5Impl">
		<property name="jdbcTemplate" ref="jdbcTemplate" />
	</bean>


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值