2014-09-19 151 views
0

我想使用MySQL數據庫,而不是使用像hsqldb這樣的運行時數據庫。我已經克隆了this repository,它使用hsqldb作爲它的數據庫。將MySQL連接到Spring應用程序

因爲我想學習如何使用關係數據庫和基於休息的spring應用程序。所以我做了如下修改的pom.xml: 改變的pom.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.springsource.restbucks</groupId> 
    <artifactId>restbucks</artifactId> 
    <packaging>war</packaging> 
    <version>1.0.0.BUILD-SNAPSHOT</version> 
    <name>Spring RESTBucks</name> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.1.5.RELEASE</version> 
    </parent> 

    <properties> 
     <spring-data-releasetrain.version>Evans-RC1</spring-data-releasetrain.version> 
     <tomcat.version>8.0.9</tomcat.version> 
    </properties> 

    <dependencies> 

     <!-- Spring Data REST --> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-rest</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
      <exclusions> 
       <exclusion> 
        <groupId>org.hibernate</groupId> 
        <artifactId>hibernate-entitymanager</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
     </dependency> 

     <!-- JDK 8 DateTime support for Hibernate --> 

     <dependency> 
      <groupId>org.jadira.usertype</groupId> 
      <artifactId>usertype.extended</artifactId> 
      <version>3.2.0.GA</version> 
     </dependency> 

     <dependency> 
      <groupId>com.fasterxml.jackson.datatype</groupId> 
      <artifactId>jackson-datatype-jsr310</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
     </dependency> 

     <!-- Database > 

     <dependency> 
      <groupId>org.hsqldb</groupId> 
      <artifactId>hsqldb</artifactId> 
      <scope>runtime</scope> 
     </dependency --> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
     </dependency> 

     <!-- Misc --> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx-events</artifactId> 
      <version>1.0.0.BUILD-SNAPSHOT</version> 
     </dependency> 

     <dependency> 
      <groupId>org.projectlombok</groupId> 
      <artifactId>lombok</artifactId> 
      <version>1.14.4</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>com.jayway.jsonpath</groupId> 
      <artifactId>json-path</artifactId> 
     </dependency> 

    </dependencies> 

    <build> 
     <plugins> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 

     </plugins> 
    </build> 

    <repositories> 
     <repository> 
      <id>spring-libs-snapshot</id> 
      <url>http://repo.spring.io/libs-snapshot</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </repository> 
    </repositories> 

    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-libs-snapshot</id> 
      <url>http://repo.spring.io/libs-snapshot</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </pluginRepository> 
    </pluginRepositories> 

</project> 

和application.properties(彈簧restbucks/src目錄/主/資源/ application.properties),我做了以下變化:

# JPA 
spring.jpa.show-sql=true 

server.port=8080 

spring.datasource.url=jdbc:mysql://localhost/restBucks 

spring.datasource.driverClassName=com.mysql.jdbc.Driver 

spring.datasource.username=root 

spring.datasource.password= 

,但我現在面臨約15這樣的錯誤:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'orderInitializer' defined in file [/home/jimish/projects/spring_projects/spring/spring-restbucks/target/classes/org/springsource/restbucks/order/OrderInitializer.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springsource.restbucks.order.OrderInitializer]: Constructor threw exception; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet 

因此,如果任何人都可以建議如何連接mysql到Spring應用程序,將是巨大的路徑。 謝謝。

+0

確保您的設置是正確的,你的數據庫中存在,並已啓動並運行,並且您可以連接到它用戶。還要確保你已經爲Hibernate選擇了正確的方言,否則你可能會得到錯誤的SQL。 – 2014-09-19 09:21:07

+0

嘿,我的數據庫存在,它的運行...但我不知道如何選擇方言休眠。你能建議一些有用的相關嗎? – jimish 2014-09-19 09:59:46

+1

我建議您閱讀文檔,而不是隻在周圍亂逛。但是設置'spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect'應該可以做到。您也可能想要將完整的堆棧跟蹤添加到您的帖子中。 – 2014-09-19 10:06:23

回答

-1

您可以驗證您的POM文件,並進行以下罐子確保最低可

 <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
     </dependency> 
     <!-- Spring AOP --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aspects</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
     </dependency> 

     <!-- MySQL JDBC connector --> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
     </dependency> 


     **Make sure you are reading your db.properties file from application-context.xml** 

     <bean id="propertyConfigurer" 
     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
      <property name="locations"> 
      <list> 
       <value>classpath:db.properties</value> 
      </list> 
     </property> 
     </bean> 

     **Make sure you use proper datasource and entity manager in application-context.xml** 

     <bean id="dataSource" class="{our.DataSource}" destroy-method="close"> 
      <property name="driverClass" value="${driver}"/> 
      <property name="jdbcUrl" value="${url}"/> 
      <property name="user" value="${username}"/> 
      <property name="password" value="${password}"/> 
     </bean> 

     <bean id="entityManagerFactory" 
      class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
      <property name="persistenceUnitName" value="spring-jpa" /> 
      <property name="dataSource" ref="dataSource" /> 
      <property name="jpaVendorAdapter"> 
       <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
        <property name="generateDdl" value="true" /> 
        <property name="showSql" value="false" /> 
        <property name="databasePlatform" value="${dialect}" /> 
       </bean> 
      </property> 

     </bean> 

    **Make sure you are adding minimum of below properties in db.properties** 

    dialect=org.hibernate.dialect.MySQL5InnoDBDialect 
    url=jdbc:mysql://localhost:3306/dbName 
    driver=com.mysql.jdbc.Driver 
    username=root 
    password=test 
+0

他在解析結果時遇到了問題,應用程序運行良好,因此依賴關係正常。此外,依賴項來自Spring引導啓動器項目,該項目已包含適當的依賴關係。 – 2014-09-19 10:08:58

2

上簡釋@M。 Deinum的評論...您需要指定JPA配置信息,因爲Spring RestBucks App正在使用Spring Data JPA

添加標準JPA屬性並指定數據庫平臺(Common Application Properties)應使您的JPA連接正常工作。

spring.jpa.show-sql=true 
spring.jpa.hibernate.ddl-auto=create-drop 
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect 

# Enable spring data repos 
spring.data.jpa.repositories.enabled=true 

# Replace with your connection string 
spring.datasource.url=jdbc:mysql://localhost:3306/restbucks 

# Replace with your credentials 
spring.datasource.username=sa 
spring.datasource.password= 

spring.datasource.driverClassName=com.mysql.jdbc.Driver 
9

只包括下面的配置,在類路徑的application.properties,它會像一個魅力:

spring.datasource.url=jdbc:mysql://localhost/jpa_example 
spring.datasource.username=root 
spring.datasource.driver-class-name=com.mysql.jdbc.Driver 
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect 
0

數據庫服務器IP,端口號和數據庫名稱

spring.datasource .url = jdbc:mysql:// localhost/sample

數據庫服務器用戶名

spring.datasource.username =根

數據庫服務器密碼

spring.datasource.password = root123每當服務器上

更新數據庫啓動

spring.jpa.hibernate.ddl-AUTO =更新

0

添加MySQL連接/ J到類路徑:

<dependency> 
    <groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <version>6.0.5</version> 
</dependency> 

這是文件的一個例子application.properties基於Spring的應用程序中:

datasource.mine.poolSize=30 

spring.datasource.url=jdbc:mysql://127.0.0.1/vy?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC 
spring.datasource.username=root 
spring.datasource.password=123456 
spring.datasource.driverClassName=com.mysql.jdbc.Driver 

spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect 
spring.jpa.show-sql=true 
spring.jpa.hibernate.ddl-auto=update