如何使用Spring MVC访问数据库

时间:2014-04-28 19:26:50

标签: java spring spring-mvc

我正在阅读参考文档 - http://docs.spring.io/spring/docs/2.0.8/reference/jdbc.html使用Spring架构从Web应用程序连接数据库。

这里,代码使用数据源创建一个jdbcTemplate。

public class JdbcCorporateEventDao implements CorporateEventDao {

    private JdbcTemplate jdbcTemplate;

    public void setDataSource(DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    // JDBC-backed implementations of the methods on the CorporateEventDao follow...
}

数据源在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.0.xsd">

    <bean id="corporateEventDao" class="com.example.JdbcCorporateEventDao">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- the DataSource (parameterized for configuration via a PropertyPlaceHolderConfigurer) -->
    <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

</beans>

我很难理解 -

  1. 在哪里存储此xml文件?对于文件来说有什么命名法吗?
  2. 如何在xml的代码中映射数据源?例如。如果我想在xml文件中有另一个环境,那么需要触及的代码应该是什么?
  3. 感谢您的输入。

3 个答案:

答案 0 :(得分:2)

  • 您可以将它存储在任何地方,并根据需要命名!您可以通过将该xml文件导入弹簧上下文来创建bean。

例如,如果我将文件命名为datasource.xml并将其存储在 src / main / resources / config 文件夹下:

<import resource="classpath:config/datasource.xml"/>
  • 您在询问如何在不同环境下轻松配置数据源。有很多方法 - 我通常在目录中创建一些数据源文件(通常是我上面提到的那个)

    datasource.DEV.xml
    datasource.QA.xml
    datasource.PROD.xml
    

每个都配置为不同的数据库。然后我通过传入一个环境变量来导入我调用&#34; env&#34;:

<import resource="classpath:config/datasource.${env}.xml"/>

如果要使用Eclipse启动,则可以在&#34; Environment&#34;下的运行配置中指定它。标签

答案 1 :(得分:1)

首先使用更高版本的弹簧(3及以上)有效地使用注释。

在xml文件中添加以下行

 <bean id="template" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>

使用@Repository注释你的dao类。

并在此课程内使用

@Autowired
JdbcTemplate jdbcTemplate

所以你的课应该是

@Repository
public class JdbcCorporateEventDao implements CorporateEventDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;


    // JDBC-backed implementations of the methods on the CorporateEventDao follow...
}

以后如果你想改变你的数据源,那么只需触摸下面的代码来改变数据源参考

 <bean id="template" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="dataSource"/>
        </bean>

此处更改数据源属性的ref="new datasource"

答案 2 :(得分:1)

回答你的第一个问题。

命名只是标准的追随方式。这不具体。,

一般大多使用

application-context.xml, 
application-resource.xml

回答你的第二个问题

谈论文件的位置并不局限于任何文件夹。只要在web.xml中定义导入资源属性。

<import resource="yourpath/myxml.xml"/> 

还有一件事要说:代码中缺少@Autowired。 migth是没有获得jdbcTemplate的原因。

@Autowired
public void setDataSource(DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }