捷凌网安JAVA频道
捷凌IT教育
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME 开源技术 其他技术 论坛
 您现在的位置: 捷凌网安 >> Java >> 开源技术 >> Spring >> 正文
Spring数据源的灵活配置巧应用

作者:佚名 责任编辑:左决 点击数: 更新时间:2008-5-11 3:31:50

  环境:
    java SE 1.5
    Spring-2.5.1
    mysql-connector-java-5.1.5.zip
    Mysql 5.x

    为了从数据库中取得数据,我们首先需要获取一个数据库连接。 Spring通过DataSource对象来完成这个工作。 DataSource是JDBC规范的一部分, 它被视为一个通用的数据库连接工厂。通过使用DataSource, Container或Framework可以将连接池以及事务管理的细节从应用代码中分离出来。 作为一个开发人员,在开发和测试产品的过程中,你可能需要知道连接数据库的细节。 但在产品实施时,你不需要知道这些细节。通常数据库管理员会帮你设置好数据源。

    在使用Spring JDBC时,你既可以通过JNDI获得数据源,也可以自行配置数据源( 使用Spring提供的DataSource实现类)。使用后者可以更方便的脱离Web容器来进行单元测试。 这里我们将使用DriverManagerDataSource,不过DataSource有多种实现, 后面我们会讲到。使用DriverManagerDataSource和你以前获取一个JDBC连接 的做法没什么两样。你首先必须指定JDBC驱动程序的全限定名,这样DriverManager 才能加载JDBC驱动类,接着你必须提供一个url(因JDBC驱动而异,为了保证设置正确请参考相关JDBC驱动的文档), 最后你必须提供一个用户连接数据库的用户名和密码。

    以上两段文字摘自Spring开发文档原文,下面我写的一个小的应用,用来测试Srping JDBC支持的效果。

    下面这个测试要实现一个目标:通过获取Spring的数据源来查询MySQL数据库testdb的一个表t_user数据。

    一、创建项目,加载程序用到的工具包和驱动。并在源代码目录中添加Spring的配置文件ApplicationContext.xml,配置内容如下:

     <?xml version="1.0" encoding="gb2312"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

    <beans>
        <!--数据库的数据源定义-->
        <bean id="rptds" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
            <property name="driverClassName">
                <value>com.mysql.jdbc.Driver</value>
            </property>
            <property name="url">
                <value>jdbc:mysql://localhost:3306/testdb</value>
            </property>
            <property name="username">
                <value>root</value>
            </property>
            <property name="password">
                <value>leizhimin</value>
            </property>
        </bean>
    </beans>

    二、然后创建数据库环境:

  create database if not exists testdb;

    DROP TABLE IF EXISTS t_user;

    CREATE TABLE t_user (
      id int(11) NOT NULL auto_increment,
      firstname varchar(50) default NULL,
      lastname varchar(50) default NULL,
      zipcode varchar(10) default NULL,
      tel varchar(20) default NULL,
      address varchar(200) default NULL,
      PRIMARY KEY  (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=gbk;

    insert  into t_user(id,firstname,lastname,zipcode,tel,address) values
    (1,'haha','hehe','234444','13577788999','阿斯地方'),
    (2,'lei','aaa','450000','13939012107','郑州市经三路');

       三、Spring Bean容器环境获取工具类

   package com.lavasoft.dbtest;

    import org.springframework.context.support.ClassPathXmlApplicationContext;

    /**
    * Created by IntelliJ IDEA.
    * File: ContextHelper.java
    * User: leizhimin
    * Date: 2008-2-21 14:20:46
    * Spring Bean容器环境获取工具类
    */
    public final class ContextHelper {
        private static ClassPathXmlApplicationContext _ctx;

        static {
            _ctx = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        }

        private ContextHelper() {
        }

        public static ClassPathXmlApplicationContext getContext() {
            return _ctx;
        }
    }

  三、写获取数据库工具类

   package com.lavasoft.dbtest;

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;

    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.CallableStatement;

    /**
    * Created by IntelliJ IDEA.
    * File: DBUtil.java
    * User: leizhimin
    * Date: 2008-2-21 14:26:30
    * 数据库工具
    */
    public final class DBUtil {
        private static final Log log = LogFactory.getLog(DBUtil.class);

        /**
         * 获取系统的数据源
         *
         * @return DataSource
         */
        public static DataSource getDataSource() {
            DataSource dataSource = null;
            try {
                dataSource = (DataSource) ContextHelper.getContext().getBean("rptds");
            } catch (Exception e) {
                log.error("获取数据源出错,请检查Spring数据源配置!");
            }
            return dataSource;
        }

        /**
         * 获取数据库连接
         *
         * @return Connection
         */
        public static Connection makeConnection() {
            Connection conn = null;
            try {
                conn = getDataSource().getConnection();
            } catch (SQLException e) {
                log.error("通过数据源获取数据库连接发生异常!");
                e.printStackTrace();
            }
            return conn;
        }

        /**
         * 执行没有参数的SQL过程
         *
         * @param procedureName 存储过程名字
         * @return boolean      返回存储过程执行的结果,true表示执行成功,false表示执行失败.
         */
        public static boolean executeBSDProcedure(String procedureName) {
            boolean flag = false;
            String sqlStr = "{call " + procedureName + "()}";
            CallableStatement cs;
            Connection conn = makeConnection();
            try {
                cs = (CallableStatement) conn.prepareStatement(sqlStr);
                cs.executeUpdate(sqlStr);
                flag = true;
            } catch (SQLException e) {
                log.error("调用存储过程" + sqlStr + "失败!");
                e.printStackTrace();
            }
            return flag;
        }
    }

[1] [2] 下一页

  • 上一篇文章:

  • 下一篇文章:
  •  
     最进更新
    普通文章J2SE实现windows读取网卡的物05-11
    普通文章Scala—Java的避难所之main(05-11
    普通文章Spring数据源的灵活配置巧应05-11
    普通文章Spring 与 Log4J 进行动态日05-11
    普通文章Heritrix的多线程ToeThread和05-11
    普通文章应用spring示例开发网站构思05-11
    普通文章Spring 数据源配置与应用05-11
    普通文章Spring中的四种声明式事务的05-11
    普通文章Hibernate+Spring搞定Clob、05-11
    普通文章Hibernate的映射关联关系05-11
     
     推荐文章
    推荐文章Java技术开源搜索引擎04-30
    推荐文章Eclipse中建立自己的JUnit测04-30
    推荐文章Eclipse 3.3上安装jadclipse04-30
    推荐文章spring 编程入门十大问题解答04-30
    推荐文章Java编程中Spring的一些负面04-30
    推荐文章Java应用中Hibernate对多表关04-30
    推荐文章关于hibernate的缓存和CRUD04-30
    推荐文章基于Struts1.2的动态多文件上04-30
    推荐文章演示Struts2实现简单上传代码04-30
    推荐文章J2EE学习笔记--Struts初步认04-30
     
     热点文章
    普通文章J2SE实现windows读取网卡的物05-11
    普通文章Scala—Java的避难所之main(05-11
    普通文章Spring数据源的灵活配置巧应05-11
    普通文章Spring 与 Log4J 进行动态日05-11
    普通文章Heritrix的多线程ToeThread和05-11
    普通文章应用spring示例开发网站构思05-11
    普通文章Spring 数据源配置与应用05-11
    普通文章Spring中的四种声明式事务的05-11
    普通文章Hibernate+Spring搞定Clob、05-11
    普通文章Hibernate的映射关联关系05-11

    | 设为首页 | 加入收藏 | 联系站长 | 广告服务 | 友情链接 | 版权申明 | 网站地图 |

    在线交流 捷凌网安主群:51649627
    Copyright 2007-2008 © 捷凌网安. All rights reserved.
    备案序号:蜀ICP备08001812号