`

Spring的第二个程序

    博客分类:
  • Java
阅读更多
   今天写了一下Spring连接数据库的程序,学到了一些东西,我用的数据库是sqlserver2000,首先将需要的包导入(包括数据库以及spring的相关的包),然后进行编写程序。
   (1)myspring.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
 <bean id="databasetest" class="org.springframework.jdbc.core.JdbcTemplate">
     <property name="dataSource">
     <ref local="dataSource"/>
     </property>
  </bean>
 
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
       <property name="driverClassName">
           <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
       </property>
       <property name="url">
           <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseNamemypro=mypro</value>
       </property>
       <property name="username">
           <value>sa</value>
       </property>
       <property name="password">
          <value>sa</value>
       </property>
  </bean>
 </beans>

  不同的数据库,需要变动加载驱动类的名称、url,并且填好针对自己数据库的用户名和密码。
  (2)SqlStatement.java
 package com;

public abstract class SqlStatement {
	
	final public static String createsql="create table mytable(id int,cname varchar(50))";
	final public static String insertdata1="insert into mytable values(1,'name1')";
	final public static String insertdata2="insert into mytable values(2,'test2')";
	final public static String insertdata3="insert into mytable values(3,'test3')";
	final public static String selectsql="select * from mytable";

}


把这些语句单独的定义在一个类中,可以使程序结构更加清晰,维护更加方便。
   (3)SpringToResult.java
package com;

public class SpringToResult {
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

}


SpringToResult类中的对象对应数据库中mytable表中一条记录。
(4)DbTest.java
package com;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.jdbc.core.RowCountCallbackHandler;

public class DbTest {
	public static void main(String args[]) {
		Resource resource = new ClassPathResource("com/myspring.xml");
		BeanFactory factory = new XmlBeanFactory(resource);
		JdbcTemplate jt = (JdbcTemplate) factory.getBean("databasetest");
		jt.execute(SqlStatement.createsql);//创建表
		jt.execute(SqlStatement.insertdata1);//插入数据
		jt.execute(SqlStatement.insertdata2);
		jt.execute(SqlStatement.insertdata3);
                   //获取表中信息
		RowCountCallbackHandler rcch = new RowCountCallbackHandler();
		jt.query(SqlStatement.selectsql, rcch);
		System.out.println("结果集中的列数量:" + rcch.getColumnCount());
		System.out.println("结果集中的行数量" + rcch.getRowCount());
		System.out.println("结果集中的结果:");

		String[] str = rcch.getColumnNames();
		for (int i = 0; i < str.length; i++) {
			System.out.print(str[i] + "  ");
		}

		final ArrayList<SpringToResult> list = new ArrayList<SpringToResult>();
		jt.query(SqlStatement.selectsql, new RowCallbackHandler() {

			public void processRow(ResultSet rs) throws SQLException {
								SpringToResult sri = new SpringToResult();
				sri.setId(rs.getInt(1));
				sri.setName(rs.getString(2));
				list.add(sri);
			}
		});

		for (int i = 0; i < list.size(); i++) {
			SpringToResult sri = (SpringToResult) list.get(i);
			System.out.print("\n" + " " + sri.getId());
			System.out.print("    " + sri.getName());
		}
		System.out.println("\n完成");

	}

}


然后运行后会发现有这样的错误产生:
2010-5-6 19:44:48 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [com/myspring.xml]
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'databasetest' defined in class path resource [com/myspring.xml]: Cannot resolve reference to bean 'dataSource' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'dataSource' defined in class path resource [com/myspring.xml]; nested exception is java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'dataSource' defined in class path resource [com/myspring.xml]; nested exception is java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
Caused by: java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:229)
at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:327)
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1073)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:348)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:267)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:110)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1100)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:862)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:423)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at com.DbTest.main(DbTest.java:19)
(5)进行仔细查看发现在xml中运用到了org.apache.commons.dbcp.BasicDataSource
dbcp是用来配置连接池的,在引入的包当中没有找到所以会出现ClassNotFound的例外,在lib\jakarta-commons找到对应的common-dbcp.jar和common-pool.jar,进行导入,然后再次运行出现正确的结果。
分享到:
评论

相关推荐

    Spring in Action 中文版 第2版 第二部分

    第二部分以第一部分介绍的DI和AOP特性为基础,叙述了如何将这两个概念应用到应用程序的数据和业务层中。第三部分介绍了Spring构建 Web应用程序的各种方式。 目 录 第一部分 spring的核心 第1章 开始spring之旅 第...

    spring.net中文手册在线版

    Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为...

    Spring攻略(第二版 中文高清版).part1

    12.2 创建第一个Spring Roo项目 486 12.2.1 问题 486 12.2.2 解决方案 486 12.2.3 工作原理 486 12.3 把现有项目导入SpringSource Tool Suite 491 12.3.1 问题 491 12.3.2 解决方案 492 12.3.3 工作...

    Spring in Action 中文版 第2版 第一部分

    第二部分以第一部分介绍的DI和AOP特性为基础,叙述了如何将这两个概念应用到应用程序的数据和业务层中。第三部分介绍了Spring构建 Web应用程序的各种方式。 目 录 第一部分 spring的核心 第1章 开始spring之旅 第...

    Spring攻略(第二版 中文高清版).part2

    12.2 创建第一个Spring Roo项目 486 12.2.1 问题 486 12.2.2 解决方案 486 12.2.3 工作原理 486 12.3 把现有项目导入SpringSource Tool Suite 491 12.3.1 问题 491 12.3.2 解决方案 492 12.3.3 工作...

    springCloud

    二:服务介绍: 1) 服务的注册与发现 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、...

    mybatis-spring-1.2.2.jar

    正如第二版那样,Spring 3.0 也仅支持 iBatis2。那么,我们就想将 MyBatis3 的支持添加 到 Spring3.0(参考 Spring Jira 中的问题)中。而不幸的是,Spring 3.0 的开发在 MyBatis 3.0 官方发布前就结束了。 因为 Spring ...

    Spring in Action(中文版)(第2版) -- 第二部分

    第二部分以第一部分介绍的DI和AOP特性为基础,叙述了如何将这两个概念应用到应用程序的数据和业务层中。第三部分介绍了Spring构建 Web应用程序的各种方式。  《Spring in Action(中文版)(第2版)》适合所有Java开发...

    Spring in Action(第二版 中文高清版).part2

    第二部分 企业Spring 第5章 使用数据库 5.1 Spring的数据访问哲学 5.1.1 了解Spring数据访问的异常体系 5.1.2 数据访问的模板化 5.1.3 使用DAO支持类 5.2 配置数据源 5.2.1 使用JNDI数据源 5.2.2 使用数据源...

    Spring in Action(第二版 中文高清版).part1

    第二部分 企业Spring 第5章 使用数据库 5.1 Spring的数据访问哲学 5.1.1 了解Spring数据访问的异常体系 5.1.2 数据访问的模板化 5.1.3 使用DAO支持类 5.2 配置数据源 5.2.1 使用JNDI数据源 5.2.2 使用数据源...

    Spring in Action(第2版)中文版

    第二部分企业spring 第5章使用数据库 5.1spring的数据访问哲学 5.1.1了解spring数据访问的异常体系 5.1.2数据访问的模板化 5.1.3使用dao支持类 5.2配置数据源 5.2.1使用jndi数据源 5.2.2使用数据源连接池 ...

    spring security 参考手册中文版

    第二部分 架构与实现 73 9.技术概述 73 9.1运行环境 73 9.2核心组件 74 9.2.1 SecurityContextHolder,SecurityContext和认证对象 74 获取有关当前用户的信息 75 9.2.2 UserDetailsService 75 9.2.3授予权力 77 ...

    spring-security-otp:Spring Security的一次性密码插件

    一次性密码令牌可以用作认证的带外第二因素。 该插件支持通过电子邮件和SMS文本传输OTP令牌。 组件 OtpGeneratingAuthenticationProvider 这包装了一个现有的AuthenticationProvider 。 身份验证请求被委派给包装...

    Spring.net框架

    在这个例子中,我们将创建三个程序集,分别是MainApp.exe、HelloGenerator.dll以及SayHello.dll。它们之间的关系如下图所示: HelloGenerator类根据提供的姓名产生一个问候字符串,代码如下: using System; ...

    springmybatis

    恭喜你,环境搭建配置成功,接下来第二章,将讲述基于接口的操作方式,增删改查。 整个工程目录结构如下: 除非申明,文章均为一号门原创,转载请注明本文地址,谢谢! mybatis实战教程(mybatis in action)之二:以...

    动力节点老杜最新版Spring6框架教程学习资料分享

    本套课程在录制时采用难度逐步递进的方式,从入门的第一个程序到手写Spring框架,真正的能够让小白成为老手。如果你是老程序员不妨看看手写Spring框架,也会让你受益颇多。本套Spring教程与其他Spring教程的区别可...

    spring in action英文版

    第二部分 Spring在业务层的应用  第4章 征服数据库  4.1 学习Spring的DAO理念  4.1.1 理解Spring的DataAccessException  4.1.2 与DataSource一起工作  4.1.3 一致的DAO支持  4.2 在Spring中使用...

    Spring2.5的新特性

    第二篇文章将涵盖web层可用的新特性;最后一篇文章将着重介绍集成和测试的新增性能。这一系列的三篇文章中引用的例子都基于Spring PetClinic应用程序范例。此范例最近被重构以用于展示Spring最新功能,并被包含于...

    基于postGIS的第二个成功应用

    NULL 博文链接:https://flyqantas.iteye.com/blog/2191032

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path、Classpath和JAVA_HOME 3.2 验证JDK是否安装成功 3.3 建立J2EE的开发环境 3.3.1 ...

Global site tag (gtag.js) - Google Analytics