9.

【Spring】DB接続設定から値の取得まで(JdbcTemplate編)

ページの作成
テンプレートを更新

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!

本稿ではSpring FrameworkにおけるDBの作成~取得まで一通りを説明します。

 

DBの作成

データベースを使用するので、今回はMySQLを用意します。

Windowsの場合、MySQLを単独でインストールすると色々と設定がめんどくさいので、今回はXAMPPのMySQLを使用します。XAMPPのインストールはこちらを参照。

MySQLにデータベースおよびテーブルを作成しましょう。以下のコマンドを実行します。

CREATE DATABASE spring_db CHARACTER SET utf8 COLLATE utf8_bin;

USE spring_db;

CREATE TABLE users (
    user_name VARCHAR(50) PRIMARY KEY,
    password VARCHAR(50) NOT NULL
);
  
INSERT INTO users(
    user_name
    , password
)VALUES(
    'tarou'
    , 'password'
),(
    'jirou'
    ,'password'
);

 

JDBCを記載

pom.xmlに以下の記述を追加しましょう。

<!-- JDBC -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.46</version>
</dependency>

<!-- CGLIB -->
<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>3.2.6</version>
</dependency>

※ついでにCGLIBというライブラリも記載しておきましょう。このライブラリはInterfaceの実装でないbeanをInjectionする際に必要となります。

 

DB接続設定

src/maim/resources」に以下の内容の「jdbc.properties」ファイルを作成しましょう。

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_db
jdbc.username=root
jdbc.password=

 

DB設定用のクラスを用意します。

「com.example.springmvc.config」パッケージを作成して、以下の内容の「DBConfig.java」を作成しましょう。

@Configuration
@PropertySource({"classpath:/jdbc.properties"})
public class DBConfig {

    @Autowired
    private 
Environment environment;

    @Bean
    public 
DataSource datasource() {
        final DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(environment.getProperty("jdbc.driverClassName"));
        dataSource.setUrl(environment.getProperty("jdbc.url"));
        dataSource.setUsername(environment.getProperty("jdbc.username"));
        dataSource.setPassword(environment.getProperty("jdbc.password"));
        return dataSource;
    }

    @Bean
    public 
DataSourceTransactionManager transactionManager() {
      return new DataSourceTransactionManager(datasource());
    }

    @Bean
    public 
JdbcTemplate jdbcTemplate() {
      return new JdbcTemplate(datasource());
    }
}

@PropertySourceで先ほど作成した「jdbc.properties」を読み込み、datasource()メソッド内で設定内容をリターンしています。

メソッド内を見るとenvironmentから設定を取得していることが分かります。

このように、読み込まれた設定情報は自動的にEnvironmentにインジェクションされます。

後述しますが、あるクラスからDBアクセスをする際にはJdbcTemplateクラスを通してDBへアクセスすることになります。

DataSourceTransactionManagerはトランザクションが発生する際に使用することになります。

DBの設定は以上となります。

 

DBから値を取得

それでは実際にDBから値を取得しましょう。

デフォルトで用意されているHomeControllerを以下のように書き換えましょう。

@Controller
public class HomeController {

    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

    @Autowired
    JdbcTemplate jdbcTemplate;

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);

        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

        String formattedDate = dateFormat.format(date);

        model.addAttribute("serverTime", formattedDate);

        //ユーザーを取得
        List<Map<String, Object>> users = jdbcTemplate.queryForList(
                "SELECT user_name, password FROM users");;

        model.addAttribute("users", users);

        return "home";
    }

}

インジェクションしたJdbcTemplateを通じてDBにアクセスしています。

これをmodelに格納することで画面側で格納した値を使用することができるようになります。

 

子ページ
子ページはありません
同階層のページ
  1. インストール(eclipseプラグイン)
  2. クイックスタート
  3. プロジェクトの作成
  4. Spring Bootプロジェクトの作成
  5. Spring Bootプロジェクトの実行
  6. Spring BootでHello World!
  7. アノテーション一覧
  8. DB接続設定からエンティティおよびリポジトリの作成、値の取得まで(JPA編)
  9. DB接続設定や値の取得(JdbcTemplate編)
  10. ビューから値をモデルに格納しコントローラーで受け取る方法
  11. コントローラーにてモデルに値を格納してビューに渡す方法
  12. テンプレートエンジン
  13. ModelとModelAndViewの違い
  14. AOPの使用方法
  15. classpath: 内部ファイルの読み込み
  16. file: 外部ファイルの読み込み
  17. CSVファイルアップロード方法(Ajax)
  18. CSVファイルダウンロード方法(Ajax)
  19. Spring Bootプロジェクトのビルドと本番環境へのデプロイ方法(内部tomcat使用)
  20. Application.propertiesの環境依存設定の分割方法
  21. JPAにおけるEntityManagerの取得方法
  22. JPAにおけるjava.sql.Connectionの取得方法
  23. エラー一覧
  24. jarの引数を受け取る方法
  25. Spring BootでGmailからメール送信
  26. 複数のDBに接続する設定(Spring Boot & JPA編)
  27. ポート番号の変更
  28. Basic認証の実装と特定のURLに限定する方法
  29. Spring SecurityのBasic認証の無効化
  30. 独自のエラーページを定義する方法
  31. プロパティファイルの値やjar実行時の引数を取得する方法

最近コメントのあったページ

最近の質問

コメント一覧

コメントがありません

ログインしなければコメント投稿はできません。