Spring_Jdbc的几种不同用法

via: http://vsp.iteye.com/blog/1182887

SpringJdbc的几种不同的用法

Spring对jdbc做了良好的封装,本人在学习时做了以下几种方式的尝试 

首页先来创建一个dao接口 

package com.wys.dao;  

public interface IUserDao {  

    void save();  

}  

扫描二维码关注公众号,回复: 468980 查看本文章

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

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代码  收藏代码

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

package com.wys.dao.impl;  

import java.util.Map;  

import javax.sql.DataSource;  

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);  

    }  

}  

配置文件 

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

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("成功!");  

    }  

}  

配置如下: 

<bean id="userImpl3Dao" class="com.wys.dao.impl.UserDao3Impl">  

        <property name="jdbcTemplate" ref="jdbcTemplate" />  

    </bean>  

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

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);  

    }  

}  

配置文件: 

<bean id="userImpl4Dao" class="com.wys.dao.impl.UserDao4Impl">  

        <property name="dataSource" ref="dataSource" />  

    </bean>  

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

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("成功!");  

    }         

}  

配置如下 

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

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

猜你喜欢

转载自mikzhang.iteye.com/blog/2258805