2015-09-05 20 views
7

私は春のプロジェクトの接続を作成しようとしていますが、とても簡単です。springを使用してデータベースに接続してテストするにはどうすればよいですか?

私のapplication.propertiesに構成フィールドを作成します。私はspring.datasourceで試してみましたが、何のエラーも出ませんでしたが、まだ情報がありません。ちょうどヌルポインタ...接続が正しく行われていないと思います。ここで

この依存関係で、私のPOMの一部です:

<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 

私はすべてのエラーを取得いけないが、私はデータベースを照会するとき、私は常に取得nullポインタ、これは私が適切に動作していないと思うように、どのようにこれを設定するアイデア?

おかげ

EDIT:

マイコンフィギュレーションクラス

@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 
} 

ERROR:

私は常にデータが存在する場合でも、NULLポインタを取得...と私はのためのデータベースのパスワードを変更した場合間違ったもの、私はどんなエラーも受け取りません。

+0

は、スプリングxmlまたは春の注釈スニペット – venergiac

+0

提出構成クラス? – jpganz18

+0

あなたはどのように豆を注入しますか? – venergiac

答えて

3

1)それはSpringBootはあなたも間違ったMySQLのパスワードを使用して任意のエラーが表示されない原因となる、代わりのMySQL H2を使用させる可能性があるのため、POMから依存関係の下に削除してください。

<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

正しいデータソースのURLは次のとおりです。

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

それはもはやエラーをスローしませんが、私は間違ったユーザーのユーザーを変更しても、私はまだnullを取得、私は他のタイプの警告、任意のアイデアを得ないように思える? – jpganz18

0

あなたはあなたのリポジトリ上@Repository注釈が欠落しています。それを追加し、あなたのためにそれが動作するかどうかを確認します。

そうでない場合は、
1.取得している完全なスタックトレースを共有します。
2.また、コントローラのエンドポイントにアクセスできますか?

+0

私は何もエラーが発生しません。それぞれのクエリでnullが返されます... – jpganz18

+0

テストするいくつかの項目: - サービスクラスにブレークポイントを置き、そこに到達するかどうかを確認します。その後、照会が実際に実行されたことを確認してコンソールをチェックします。もしそうなら、そのクエリは何ですか? - ユーザーテーブルにID = 1のエントリがあるかどうかを確認します。 - コントローラでは、返されたユーザーオブジェクトがnullの場合、NULLポインタ例外が発生しています。 –

関連する問題