spring 整合JDBC

spring 整合JDBC

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

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

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118983.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 字符串数组转换为list集合

    字符串数组转换为list集合String[]arr={“a”,”C”,”abc”}; //asList该方法可以直接将一个数组转换为list集合,但是该集合是[只读的],不能对得到的集合进行增删改List<String>asList=Arrays.asList(arr);System.out.println(asList);//结果:[a,C,abc]Listlis…

    2022年6月21日
    32
  • webapp开发框架[通俗易懂]

    webapp开发框架[通俗易懂]前言快速增长的APP应用软件市场,以及智能手机的普及,手机应用:Native(原生)APP快速占领了APP市场,成为了APP开发的主流,但其平台的不通用性,开发成本高,多版本开发等问题,一直困扰着专业APP开发企业,和APP服务提供商。安卓和IOS的操作方式,开发模式,界面UI显示方面的差别,也使得原生APP的不同版本体验有很大的区别,光是做兼容性调测,都要花费开发企业不少的时间。近年来,另一种应用形态——基于HTML5技术的WebApp也如雨后春笋般出现,于是关于原生APP与HTML5APP

    2022年4月19日
    101
  • 大学四年,从小白到大神,全网最硬核算法学习攻略,不接受反驳

    大学四年,从小白到大神,全网最硬核算法学习攻略,不接受反驳一道题做半天,另外半天看这道题的题解,一台电脑一包烟,一道题解整一天,是我智商有问题吗?刷了两年题之后,我可以负责任跟你说,刷题吃力很正常,学算法,刷leetcode不是一朝一夕的事情,需要一个过程。而且新手学算法,还很容易陷入一些误区,例如一上来就抱着《算法导论》这种天书,啥数据结构还没学,就去刷leetcode,这其实不好,只会让自己放弃算法。学习算法,应该要一步一步来,要有规划,下面给大家分享下我的算法学习经验吧,觉得有帮助给我点个赞就行了。一、刷题前的一些准备如果你连最基本的数据结

    2022年6月19日
    23
  • 数据挖掘之时间序列分析[通俗易懂]

    数据挖掘之时间序列分析[通俗易懂]按时间顺序排列的一组随机变量X1,X2,…,Xt表示一个随机事件的时间序列。时间序列分析的目的是给定一个已被观测了的时间序列,预测该序列的未来值。表1常用的时间序列模型 模型名称 描述 平滑法 常用于趋势分析和预测,利用修匀技术,削弱短期随机波动对序列的影响,使序列平滑化。 根据所用平滑技术的不同,可分为移动平均法和指数平滑法。 趋势拟合法…

    2022年6月22日
    30
  • Java泛型详解,史上最全图文详解「建议收藏」

    Java泛型详解,史上最全图文详解「建议收藏」泛型在java中有很重要的地位,无论是开源框架还是JDK源码都能看到它。毫不夸张的说,泛型是通用设计上必不可少的元素,所以真正理解与正确使用泛型,是一门必修课。一:泛型本质Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛.

    2022年7月8日
    28
  • 无线wifi-PJ-之在开启WPS下使用reaver

    无线wifi-PJ-之在开启WPS下使用reaverPJ简单解释:  PIN码分前4和后4,先破前4只有最多一万个组合,破后4中的前3只有一千个组合,一共就是一万一千个密码组合。10的4次方+10的3次方=11000个密码组合。  当reaver确定前4位PIN密码后,其任务进度数值将直接跳跃至90.9%以上,也就是说只剩余一千个密码组合了。总共一万一千个密码!—————————–

    2022年6月4日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号