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>


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

猜你喜欢

转载自yangjb.iteye.com/blog/1188552
今日推荐