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>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值