0

请原谅我,因为我是 Spring 初学者。我按照书中的示例进行操作,但我只是将数据库从 Derby 更改为 MySQL。

我的主要课程相当简单:

public class Main {

public static void main(String [] args)
{
    ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");

    VehicleDAO dao= (VehicleDAO) context.getBean("vehicleDao");
    Vehicle vehicle = new Vehicle("TEM0001", "Red", 4, 4);
    dao.insert(vehicle);
}

}

它创建一个数据访问对象并尝试将新的 Vehicle 对象添加到 DAO 中。Vehicle 类非常简单,一个具有四个字段的对象类。

VehicleDAO 类粘贴在这里:

http://pastebin.com/ekB2Rb40

我的 bean 文件是这样的:

<bean id="dataSource"
 class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName"
   value="org.gjt.mm.mysql.Driver" />
   <property name="url"
   value="jdbc:mysql://localhost:3306/vehicle" />
  <property name="username" value="root" />
  <property name="password" value="3324911" />
  <property name="initialSize" value="2" />
  <property name="maxActive" value="5" />
</bean>
<bean id="vehicleDao"
  class="com.apress.springrecipes.vehicle.JdbcVehicleDao">
  <property name="dataSource" ref="dataSource" />
</bean>

正如您在上面看到的,我总是在行出现空指针错误

conn= dataSource.getConnection();

所以我怀疑 MySQL 连接有问题,但我已经在 Eclipse 的类路径中包含了“mysql-connector-java-bin.jar”。

提前感谢您的帮助!

4

1 回答 1

2

您的设置器中有错字

  public void setDataSource(DataSource datasource)
        {
                this.dataSource=dataSource;
        }

所以当Spring注入数据源时,它的值并没有被保存,不知道你的IDE是否检查了源代码中的这种错误。

PS 你不应该在你的 DAO 类中手动打开数据库连接,我们在 Spring 中有 JdbcTemplate。

于 2012-11-26T15:22:04.243 回答