2015-09-05 50 views
7

我想爲我的spring項目創建一個連接,這很簡單。如何使用彈簧連接到我的數據庫並進行測試?

我想在我的application.properties上創建配置字段。我嘗試了spring.datasource,我沒有得到任何錯誤,但仍然沒有得到任何信息,只是空指針...我認爲連接沒有做好。

這裏是我的聚甲醛的一部分,與此依存關係:

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>4.2.1.RELEASE</version> 
    </dependency> 

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

我的屬性:

server.port=80 
jdbc.driverClassName=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://localhost:3306/database 
jdbc.username=user 
jdbc.password=password 

我沒有得到任何錯誤,但是當我查詢數據庫,我總是得到空指針,這讓我覺得工作不正常,任何想法如何配置?

感謝

編輯:

我的配置類

@SpringBootApplication 
public class Application { 

    public static void main(String[] args) { 
     ApplicationContext ctx = SpringApplication.run(Application.class, args); 

    } 

} 

控制器

@Autowired 
private MyService myService; 


@RequestMapping("/") 
public String index() { 
    User myUser = myService.findUserById(1L); 
    System.out.println(myUser); 
    return myUser.getFirstName(); 
} 

我的服務實現

@Service 
public class MyServiceImpl implements MyService { 

    @Autowired 
    UserRepository userRepository; 


    public User findUserById(Long id){ 
     return userRepository.findOne(id); 
    }; 
} 

我的實體

@Entity 
public class User { 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Long id; 
    private String firstName; 
    private String lastName; 


    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 

} 

而且我的倉庫

public interface UserRepository extends CrudRepository<User, Long> { 

    //User findOne(Long id); this is a default method 
} 

出現錯誤:

我總是得到空指針,即使存在數據...如果我更改數據庫密碼一個錯誤的,我沒有得到任何錯誤..就好像它會沒事。

+0

提交的Spring XML或彈簧註釋片斷 – venergiac

+0

的配置類? – jpganz18

+0

如何注入bean? – venergiac

回答

3

1)請從POM刪除下面的依賴,因爲它可能讓SpringBoot使用H2爲mysql,這會導致你看不到任何錯誤,即使錯了mysql的密碼。

<dependency> 
    <groupId>com.h2database</groupId> 
    <artifactId>h2</artifactId> 
</dependency> 

2)在application.properties,請使用:

spring.datasource.url=jdbc:mysql://localhost:3306/database 
spring.datasource.username=user 
spring.datasource.password=password 
spring.datasource.driver-class-name=com.mysql.jdbc.Driver 

這些屬性的名稱可以從SpringBoot文件中找到:http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html

1

正確的數據源網址是:

jdbc:mysql://HostName:Port(3306 is the default)/DBName 
+0

它不拋出了一個錯誤,但是我還是空,即使我改變用戶對錯誤的用戶,好像我不明白其他類型的警告,任何想法? – jpganz18

0

你缺少你的存儲庫中的@Repository註解。添加,看看是否適合你。

如果沒有,請將
1.共享您獲得的完整堆棧跟蹤。
2.此外,您是否能夠連接到控制器端點?

+0

我沒有得到任何錯誤,只是空每個查詢...... – jpganz18

+0

有幾件事情來測試: - 將一個破發點中的服務類,看看它是否到達那裏。然後清除並檢查查詢實際上是否被觸發的控制檯。如果是這樣,那個查詢是什麼? - 檢查是否有具有ID用戶表= 1 入門 - 在控制器中,如果返回的用戶對象爲空,那麼你應該得到一個空指針異常。 –

相關問題