[转] SpringJdbc的几种不同的用法
转自:http://vsp.iteye.com/blog/1182887
Spring对jdbc做了良好的封装,本人在学习时做了以下几种方式的尝试
首页先来创建一个dao接口
- package com.wys.dao;
- public interface IUserDao {
- void save();
- }
第一种方式通过继承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("成功!");
- }
- }
配置文件如下:
- <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.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);
- }
- }
配置文件
- <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>
其实方法还有很多种,关键是看你是需要继承还是组合,需要注入的对象是什么!
[转] SpringJdbc的几种不同的用法的更多相关文章
- SharedPreferences 的另一种场景的用法
SharedPreferences 的另一种场景的用法 昨天,下班在家想做什么来着,然后想用SharedPreferences存点数据,但是不知道咋地突然想到,SharedPreferences是应用 ...
- [转]jQuery的each方法的几种常用的用法
下面提一下jQuery的each方法的几种常用的用法 复制代码 代码如下: var arr = [ "one", "two", "three&quo ...
- 避免常见的6种HTML5错误用法
一.不要使用section作为div的替代品 人们在标签使用中最常见到的错误之一就是随意将HTML5的<section>等价于<div>——具体地说,就是直接用作替代品(用于样 ...
- Java 枚举(enum) 详解7种常见的用法
Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...
- 一直被用错的6种SQL 错误用法
一直被用错的6种SQL 错误用法 1.LIMIT 语句 2.隐式转换 3.关联更新.删除 4.EXISTS语句 5.条件下推 6.提前缩小范围 sql语句的执行顺序: FROM ON JOIN WHE ...
- MySQL常见的8种SQL错误用法
MySQL常见的8种SQL错误用法 前言 MySQL在2016年仍然保持强劲的数据库流行度增长趋势.越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来.但也 ...
- C++中三种new的用法
转载自:http://news.ccidnet.com/art/32855/20100713/2114025_1.html 作者: mt 1 new operator,也叫new表达式:new表达式比 ...
- asp.net中的<%%>的几种形式的用法
转自:http://blog.csdn.net/wang379275614/article/details/9625911 在asp.net中经常出现包含这种形式<%%>的html代码,总 ...
- PLSQL 几种游标的用法
分类: Oracle 1. PL/SQL里的游标可以分为显式和隐式两种,而隐式有分为select into隐式游标和for .. in 隐式游标两种.所以,我们可以认为,有3种游标用法: A. 显式游 ...
随机推荐
- 树形dp Codeforces Round #364 (Div. 1)B
http://codeforces.com/problemset/problem/700/B 题目大意:给你一棵树,给你k个树上的点对.找到k/2个点对,使它在树上的距离最远.问,最大距离是多少? 思 ...
- [QML] Connections元素介绍
一个Connections对象创建一个了一个QML信号的连接.在QML中,我们连接信号通常是用使用"on<Signal>"来处理的,如下所示: MouseArea { ...
- 两个数组各个数相加或相乘变成一个矩阵求第K大
input 1<=T<=20 1<=n<=100000,1<=k<=n*n a1 a2 ... an 0<ai<=10000 b1 b2 ... bn ...
- Windows快捷键大全(从XP到win8.1)
常见用法 F1 显示当前程序或者windows的帮助内容. F2 当你选中一个文件的话,这意味着“重命名” F3 当你在桌面上的时候是打开“查找:所有文件” 对话框 F5 刷新 F10或ALT 激活当 ...
- linux的学习系列 7---管道和过滤器
有时候,我们可以把两个命令连起来使用,一个命令的输出作为另一个命令的输入,这就叫做管道.为了建立管道,需要在两个命令之间使用竖线(|)连接. 管道是Linux进程之间一种重要的通信机制:除了管道,还有 ...
- 未找到或无法访问服务器 请验证实例名称是否正确并且SQL Server 已配置为允许远程连接
无法连接到sql server 2008服务器 报下错误 其他信息 在与SQL Server建立连接时出现与网络相关的或特定于实例的错误 未找到或无法访问服务器请验证实例名称是否正确并且SQL ...
- HDU2181:哈密顿绕行世界问题(DFS)
哈密顿绕行世界问题 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Sub ...
- Android----->多线程的实现Thread、IntentService的运用
首先建立一个Intent.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...
- CodeForces 681C Heap Operations(模拟)
比较简单的模拟,建议使用STL优先队列. 代码如下: #include<iostream> #include<cstdio> #include<cstring> # ...
- Python基础学习3---数据结构
数据结构 数据结构基本上就是---他们是可以处理数据的结构或者说他们是用来存储一组相关数据的. 在python中有三种内建的数据结构-----列表.元组和字典 列表(list) 列表就像是我们要去超市 ...