使用Spring提供的三个JDBC模板类(JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate)操作数据库

一、JdbcTemplate是Spring中最主要的JDBC模板, 利用JDBC和简单的索引參数查询对数据库进行简单訪问

二、NamedParameterJdbcTemplate可以在查询的时候把值绑定到SQL里的命名參数,而不是索引參数

    NamedParameterJdbcTemplate内部包括了一个JdbcTemplate,所以JdbcTemplate能做的事情NamedParameterJdbcTemplate都能干;

    NamedParameterJdbcTemplate相对于JdbcTemplate主要添加�了參数能够命名的功能。

三、SimpleJdbcTemplate利用Java5的特性,比方自己主动装箱、通用和可变參数列表来简化JDBC模板的使用

    SimpleJdbcTemplate内部包括了一个NamedParameterJdbcTemplate;所以NamedParameterJdbcTemplate能做的事情SimpleJdbcTemplate都能干,

    SimpleJdbcTemplate相对于NamedParameterJdbcTemplate主要添加�了JDK5.0的泛型和可变长度參数支持。





1、使用JDBC Template





JdbcTemplate是一个辅助类,封装了JDBC的操作,直接使用JdbcTemplate非常easy~Template仅仅依赖于数据源。

本样例使用的DriverManagerDataSource,是一个“伪”数据源,仅仅是模拟了形式,并没事实现数据源的功能。

   DriverManagerDataSource ds = new DriverManagerDataSource();

   ds.setDriverClassName("com.mysql.jdbc.Driver");

   ds.setUrl("jdbc:mysql://localhost:3306/sampledb");

   ds.setUsername("root");

   ds.setPassword("");

  

   JdbcTemplate jdbc = new JdbcTemplate();

   jdbc.setDataSource(ds);

   String sql = "create table t_user1(user_id int primary key,user_name varchar(60))";

   jdbc.execute(sql);





2、JdbcDaoSupport,&& 让Spring JDBC更“Spring”

假设在代码中重复声明JdbcTemplate,代码会被污染的非常严重,那和JDBC没差别了就~

所以Spring提供了JdbcDaoSupport,全部DAO继承这个类,就会自己主动获得JdbcTemplate(前提是注入DataSource)。





另外:Spring的xml配置能够非常好的用在这里,在xml中配置,基本流程例如以下:

(1)声明DataSrouce的Bean,这里用BasicDataSource,就是DBCP数据源(Tomcat用的那个)

(2)声明模板JdbcTemplate的Bean,并把DataSource注入之

(3)声明Dao,class为集成自JdbcDaoSupport的东西,并注入JdbcTemplate。





上述Bean生成过程能够用Spring IDE……相当的方便。别的不说了,Code。





applicationContext.xml





<?xml version="1.0" encoding="UTF-8"?>

<beans

xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">





<bean id="dataSource"

   class="org.apache.commons.dbcp.BasicDataSource" abstract="false"

   lazy-init="default" autowire="default" dependency-check="default"

   destroy-method="close">

   <property name="driverClassName">

    <value>com.mysql.jdbc.Driver</value>

   </property>

   <property name="url">

    <value>jdbc:mysql://localhost:3306/sampledb</value>

   </property>

   <property name="username">

    <value>root</value>

   </property>

   <property name="password">

    <null />

   </property>

</bean>





<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">

   <property name="dataSource">

    <ref bean="dataSource" />

   </property>

</bean>





<bean id="Dao" abstract="true">

   <property name="jdbcTemplate">

    <ref bean="jdbcTemplate" />

   </property>

</bean>





<bean id="forumDAO" class="dao.jdbc.ForumDAO" parent="jdbcTemplate"

   abstract="false" lazy-init="default" autowire="default"

   dependency-check="default">

</bean></beans>





ForumDAO

package dao.jdbc;

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

public class ForumDAO extends JdbcDaoSupport 

{

     public void initDb()

     {

        String sql = "create table t_user1(user_id int primary key,user_name varchar(60))";

        getJdbcTemplate().execute(sql);

     }

}





Main

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.datasource.DriverManagerDataSource;





public class Main 

{

public static void main(String args[])

{

   DriverManagerDataSource ds = new DriverManagerDataSource();

   ds.setDriverClassName("com.mysql.jdbc.Driver");

   ds.setUrl("jdbc:mysql://localhost:3306/sampledb");

   ds.setUsername("root");

   ds.setPassword("");

  

   JdbcTemplate jdbc = new JdbcTemplate();

   jdbc.setDataSource(ds);

   String sql = "create table t_user1(user_id int primary key,user_name varchar(60))";

   jdbc.execute(sql);

}





}

spring 整合JDBC的更多相关文章

  1. Spring整合jdbc

    首先web.xml文件跟往常一样,加载spring容器和加载org.springframework.web.context.ContextLoaderListener读取applicationCont ...

  2. JAVAEE——spring03:spring整合JDBC和aop事务

    一.spring整合JDBC 1.spring提供了很多模板整合Dao技术 2.spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术. JDBCTemplate => JDBC模 ...

  3. Spring整合JDBC及事务处理

    1.Spring整合JDBC DAO是数据访问对象(data access object)的简写.接口是实现松耦合的关键,Spring也鼓励使用接口,但不是强制的. 捕获异常时希望能尝试从异常状态中恢 ...

  4. Spring整合JDBC以及AOP管理事务

    本节内容: Spring整合JDBC Spring中的AOP管理事务 一.Spring整合JDBC Spring框架永远是一个容器,Spring整合JDBC其实就是Spring提供了一个对象,这个对象 ...

  5. Spring整合JDBC实现简单的增删改

    Spring整合JDBC实现简单的增删改: 1.导入Spring的包和数据库的驱动包: 2.选择一个数据源(dbcp和C3P0) 3.导入数据源的包(这里我们使用dbcp) <span styl ...

  6. Spring知识点总结(五)Spring整合JDBC

     1. 回顾JDBC        a. java操作关系型数据的API.导入相关数据库的驱动包后可以通过JDBC提供的接口来操作数据库.        b. 实现JDBC的六个步骤          ...

  7. Spring整合JDBC(连接池、JDBC模板、Dao配置到Spring容器、配置文件的优化)

    1.Spring整合JDBC (1)导包(共12个): c3p0连接池.JDBC驱动(4个) Spring-jdbc.Spring-tx事务(2个) (2)JDBC模板对象(JDBCTemplate) ...

  8. spring整合jdbc方法一

    用了一段时间的spring这,闲来没事做一下spring整合jdbc 目录文件 导入jar包 由于spring的jar包是在myeclipse中自动导入的有些暂时用不到的也没有处理. Emp类 pac ...

  9. Spring学习笔记(五)—— Spring整合JDBC

    一.Spring对JDBC的支持 Spring提供了很多模板整合Dao技术 与JDBC的整合中,Spring中提供了一个可以操作数据库的对象——JdbcTemplate,该对象封装了JDBC技术,与D ...

  10. Spring整合JDBC temple

    一.Spring对Jdbc的支持 Spring为了提供对Jdbc的支持,在Jdbc API的基础上封装了一套实现,以此建立一个 JDBC 存取框架. 作为 Spring JDBC 框架的核心, JDB ...

随机推荐

  1. Linux发行版

    Linux 发行版(英语:Linux distribution,也被叫做GNU/Linux 发行版),为一般用户预先集成好的Linux操作系统及各种应用软件.一般用户不需要重新编译,在直接安装之后,只 ...

  2. 深入探究JavaScript中的比较问题

    先用最近遇到的几个问题做引子: 1 console.log(null==undefined); //true 2 console.log(null==false);//false 3 console. ...

  3. Cocos2d-x 3.0 beta 中加入附加项目,解决无法打开包括文件:“extensions/ExtensionMacros.h”: No such file or directory”

    Cocos2d-x 3.0 Alpha 1开始 对目录结构进行了整合.结果有些附加项目也被在项目中被精简出去. 比如说如果你需要使用CocoStdio导出的JSON.或使用Extensions扩展库, ...

  4. 【技术贴】解决QQ空间发表文章手机不显示换行

    采用HTML模式,在需要换行的地方加入如下代码. <div><span style="font-family:微软雅黑;font-size:16px"> & ...

  5. 如何配置svn服务器(通过VisualServer服务器)

    如果你已经安装好了VisualServer服务器,现在让我们一起来配置svn服务器吧

  6. 抽象类 接口 虚函数(C++模拟,个人见解)

    1.抽象类里面可以有非抽象方法但接口里只能有抽象方法声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实 ...

  7. [OJ] Search for a Range

    LintCode 61. Search for a Range (Medium) LeetCode 34. Search for a Range (Medium) class Solution { p ...

  8. bzoj2631 3282

    这两题都是link cut tree的裸题之前看Qtree的论文,只会在确定父子关系的情况下连边和删边如果在任意两个点连边删边怎么做呢?这时候我们不能随意的将一个点的父节点设为另一个点,因为其中某个点 ...

  9. bzoj1237

    假如不存在相等的两个数不能配对,那很容易贪心得到,A中rank 1匹配B中rank 1 A中rank2 匹配B中rank 2…… 有了相等不能匹配这个条件,那么A中rank i可能和rank i,i- ...

  10. FileZilla 425 Can't open data connection

    FileZilla 425 Can't open data connection WIN 2008 SERVER+FileZilla FTP Server,FTP端口:2013 防火墙中已允许FTP ...