データベース情報設定
プロジェクトにデータベースの接続情報を設定します。フォルダー「src/main/resurces」の「application.properties」ファイルを開いてください。そして次の内容を入力し保存してください
| 
					 1 2 3  | 
						spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/challenge05?serverTimezone=JST spring.datasource.username=root spring.datasource.password=  | 
					
詳細は割愛しますが、データベースのサーバー、ユーザID/パスワード情報が設定されています。
接続テスト
データベースと接続できるかテストしてます。ListApplication.javaを次のように変更してください。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36  | 
						package com.example.demo; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.jdbc.core.JdbcTemplate; @SpringBootApplication public class ListApplication  implements CommandLineRunner { 	public static void main(String[] args) { 		SpringApplication.run(ListApplication.class, args); 	} 	@Autowired 	JdbcTemplate jdbcTemplate; 	@Override 	public void run(String... strings) throws Exception { 		List<Map<String, Object>> ret = jdbcTemplate.queryForList("SELECT * FROM item"); 	    for(Map<String, Object> each: ret) { 	    	System.out.println((Integer)each.get("id")); 			System.out.println((String)each.get("name")); 			System.out.println((Integer)each.get("kind")); 			System.out.println((Integer)each.get("price"));         } 	} }  | 
					
14行目でインタフェースCommandLineRunnerを記述していますが、このインターフェースにSpring Boot起動時に実行されるメソッドが定義されています。今回はこのメソッドにデーターベース接続確認用の命令を記述します。
| 
					 14  | 
						public class ListApplication  implements CommandLineRunner {  | 
					
19行目の「@Autowired」がクラスをインスタンス化する命令です。これを記述すると次の行のクラスがインスタンス化されます。単純にnew命令によりインスタンス化しないのは、DI(依存性の注入)という動作を実現するためです。これでデータベースへアクセスするためのクラスJdbcTemplateがインスタンス化されます。
| 
					 19 20  | 
							@Autowired 	JdbcTemplate jdbcTemplate;  | 
					
インタフェースに定義されているメソッドが23行目のrunです。このメソッドの中にデータベース接続確認用の命令を記述します。
| 
					 22 23  | 
							@Override 	public void run(String... strings) throws Exception {  | 
					
25行目の「jdbcTemplate.queryForList」命令がデータベースのアクセス命令です。引数にお馴染みのSQL文が記述されています。戻り値が<Map<String, Object>>型の配列(List)で返ってきます。
| 
					 25  | 
								List<Map<String, Object>> ret = jdbcTemplate.queryForList("SELECT * FROM item");  | 
					
27行目から取得したレコード数分、各項目を取り出しながら表示しています。
| 
					 27 28 29 30 31 32  | 
							    for(Map<String, Object> each: ret) { 	    	System.out.println((Integer)each.get("id")); 			System.out.println((String)each.get("name")); 			System.out.println((Integer)each.get("kind")); 			System.out.println((Integer)each.get("price"));         }  | 
					
実行するとデータベースのアクセスが正常ならテーブルitemの内容がコンソールに表示されます。
デーベースアクセスができましたので、プログラムを作成していきましょう。

  
  
  
  