【问题标题】:Database access with Spring and Jdbc使用 Spring 和 Jdbc 访问数据库
【发布时间】:2016-06-18 00:21:39
【问题描述】:

我是 spring 新手,现在我正在访问数据库并在 jsp 中显示结果。这是我用来连接数据库的xml文件:

<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.springframework.jdbc.datasource.DriverManagerDataSource">

    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://192.168.1.11:3306/databasename" />
    <property name="username" value="****" />
    <property name="password" value="****" />
</bean>

<bean id="Am_facultyentityDAO" class="com.bdAlmamater.model.Am_facultyentityJdbcDAO">
    <property name="dataSource" ref="dataSource" />
</bean>
<bean id="Am_campusentityDAO" class="com.bdAlmamater.model.Am_campusentityJdbcDAO">
    <property name="dataSource" ref="dataSource" />
</bean>

一切正常,但我的数据库中有很多表,我想知道是否必须为每个表添加如下内容:

 <bean id="Am_campusentityDAO" class="com.bdAlmamater.model.Am_campusentityJdbcDAO">
    <property name="dataSource" ref="dataSource" />
</bean>

或者它是一种更短的编写方式?提前谢谢你。

【问题讨论】:

  • 这是使用十年前的 Spring 版本。看看 Spring Boot。

标签: java mysql spring spring-mvc jdbc


【解决方案1】:

您应该考虑使用 Hibernate/JPA 和/或 Spring Data JPA。

这样您就不必编写深入的 DAO,而只需使用常规命名的简单接口和一些自定义查询即可。

接下来的两个链接将对您有所帮助:

或者,如果您喜欢使用 Spring Context XML 来创建应用程序蓝图,您可以使用:

<bean id="Am_campusentityDAO" class="com.bdAlmamater.model.Am_campusentityJdbcDAO"/>

并自动连接 DataSource 字段:

@Autowired
Datasource datasource;

【讨论】:

  • Spring Data 真的很棒!
  • @sahel 这怎么能回答这个问题?您可能应该提供答案而不是提供替代方案。因为我可能不想使用 Hibernate 或 Jpa
  • @PragnaniKinnera 问题是:“或者有没有更短的方法?”这意味着另一种选择,因为 AFAIK 没有约束。让我编辑答案并添加另一个替代方案。
  • @sahel 可以看到的是,他的意思是在 bean 配置文件中不声明 Dao 类的替代方法。他从未指定任何 ORM、框架等
  • @PragnaniKinnera 完全正确!你能看到什么。就像你一样,我给出了一个更短的替代方案。为什么这是一个问题,因为问题正在寻求更短的解决方案。当他使用 Spring Context XML 进行配置时,我不明白他为什么要按照您的建议使用组件扫描。 IMO 我给出的答案和你的一样有效。
【解决方案2】:

您不需要每次都在 bean 配置文件中声明您的类,您可以使用 Spring 的立体类型(如 Component、Service、Repository 和 Controller)来识别您的类。

为了使用这种刻板印象,

你需要先指定

 <content:componet-scan  base-package="com.bdAlmamater.model" >

并指定要扫描的包(即存在您的立体类型注释类的包)

如果您使用的是较低版本的spring(即2.x),则需要指定

<context:annotation-config>

为了让spring识别注解,如果你使用的是spring的更高版本(3.x、4.x),则不需要指定。

然后用@Repository 构造型注释你的类(因为你在Dao层上使用它)

@Repository
class Am_campusentityJdbcDAO

如果它需要任何依赖,你只需要使用@Autowired注解注入它们

在你的情况下

@Autowired
Datasource datasource;

【讨论】:

  • 感谢您的解决方案! :D
猜你喜欢
  • 2018-06-17
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
相关资源
最近更新 更多