タイトル: DB接続設定や値の取得(JdbcTemplate編)
SEOタイトル: DB接続設定から値の取得まで(JdbcTemplate編)
本稿では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 ( |
JDBCを記載
pom.xmlに以下の記述を追加しましょう。
<!-- JDBC --> <!-- CGLIB --> |
※ついでにCGLIBというライブラリも記載しておきましょう。このライブラリはInterfaceの実装でないbeanをInjectionする際に必要となります。
DB接続設定
「src/maim/resources」に以下の内容の「jdbc.properties」ファイルを作成しましょう。
jdbc.driverClassName=com.mysql.jdbc.Driver |
DB設定用のクラスを用意します。
「com.example.springmvc.config」パッケージを作成して、以下の内容の「DBConfig.java」を作成しましょう。
@Configuration @Autowired @Bean @Bean @Bean |
@PropertySourceで先ほど作成した「jdbc.properties」を読み込み、datasource()メソッド内で設定内容をリターンしています。
メソッド内を見るとenvironmentから設定を取得していることが分かります。
このように、読み込まれた設定情報は自動的にEnvironmentにインジェクションされます。
後述しますが、あるクラスからDBアクセスをする際にはJdbcTemplateクラスを通してDBへアクセスすることになります。
DataSourceTransactionManagerはトランザクションが発生する際に使用することになります。
DBの設定は以上となります。
DBから値を取得
それでは実際にDBから値を取得しましょう。
デフォルトで用意されているHomeControllerを以下のように書き換えましょう。
@Controller private static final Logger logger = LoggerFactory.getLogger(HomeController.class); @Autowired @RequestMapping(value = "/", method = RequestMethod.GET) Date date = new Date(); String formattedDate = dateFormat.format(date); model.addAttribute("serverTime", formattedDate); //ユーザーを取得 model.addAttribute("users", users); return "home"; } |
インジェクションしたJdbcTemplateを通じてDBにアクセスしています。
これをmodelに格納することで画面側で格納した値を使用することができるようになります。