プログラミングコンテストチャレンジブック [読んでおく本]
プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~
- 出版社/メーカー: マイナビ出版
- 発売日: 2012/01/28
- メディア: Kindle版
Java言語で学ぶデザインパターン入門 [読んでおく本]
SQLアンチパターン [読んでおく本]
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice) [読んでおく本]
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)
MyBatisでO/Rマッピング [プログラミング]
前置き
MyBatisは他のO/Rマッピングフレームワークとは違って、SQLとオブジェクトをマッピングする。
SQLをXMLファイルで別途定義できるので、実装が分担しやすく管理が容易になる。
以前のCRUD図作成アプリも、
この特性を利用して動作している。
今回は、手順が多い。が、ほとんどが事前準備で、実際はMapperインタフェースと、それに紐づけるXMLファイルがメイン。
本来であれば、Spring FrameworkなどのDIフレームワークと組み合わせて使用するのが一般的。
DIすると、SQLにMapperインタフェースを直接紐づけることができ、かなり便利になる。
今回実装するのは、以前のSQLを、
TableViewで表示するだけの簡単なプログラムで、SELECT文のみ使用する。
もう少し実務寄りな実装は、MyBatis公式で
確認すると良い。という元も子もない事を言っちゃう。
ポイント
- MariaDBでCREATE TABLE時にCHARSETを指定する
- @Mapperを付与したマッパーインタフェースを実装する
- 取得ボタンはデータクラスのListで結果を取得する
- 集計ボタンはMapのListで結果を取得する
- 集計ボタンはSeq列を表示しない
- NULLからデータのマッピングはできないので代替値を取得する
- SqlSessionはCloseするまでトランザクションが終了しない
実装
pom.xmlにMyBatisと、JDBC(今回は、Maria DB)を追加する。pom.xml
mybatis-config.xmlを作成し、接続情報とマッピング情報を定義する。
mybatis-config.xml
FXDemo.fxml
FXDemo.kt
mybatis-config.xml
データ準備
構成
実行結果
取得ボタン押下集計ボタン押下
JavaFXの非同期処理 [JavaFX]
前置き
前回メモした通り、Progress系のコントロールで進捗状況を逐次確認したい時は、非同期で進捗度合いを更新する必要がある。
JavaFXでは非同期処理用に、javafx.concurrent.Taskクラスが用意されている。
Taskクラスのcallメソッドに、時間が掛かる処理を実装しておき、別スレッドでそのTaskを呼び出す流れ。
Taskクラスには、updateProgressメソッドが用意されており、簡単に進捗度を更新できるようになっている。
これにより、Progressコントロールに非同期処理を実装したTaskクラスをバインドすることで、
進捗度合いをリアルタイムでモニタできるようになっている。
Taskクラスは他にも、cancelledメソッドやsucceededメソッドなど、非同期処理を制御するためのメソッドが用意されている。
SwingのSwingWorkerと使い方はほとんど同じだが、処理状況、進捗度合い、処理結果などを保持できるあたりが優秀。
画面設計
- 初期表示
- 全てのバーとインジケータを初期化
- 実行中(Start・Restartボタン)
- 第1インジケータを不確定モードにする
- 第2バーを不確定モードにする
- 非同期処理を開始 or 再開する
- 他のバーとインジケータで進捗度をモニタする
- Start・Restartボタンを非活性にする
- 停止状態(Stopボタン)
- 非同期処理を中断する
- 全てのバーとインジケータに停止時の進捗度を表示する
- 実行中はStartボタンのテキストをRestartに変更する
- Restartボタンを活性化する
- 完了
- 全てのバーとインジケータの状態を完了にする
- RestartボタンのテキストをStartに変更する
実装
FXDemo.fxmlFXDemo.kt
実行結果
初期表示実行中
停止状態
完了
ProgressBar・ProgressIndicator [JavaFX]
CRUD図作成アプリを創る(5/5) [プログラミング]
前置き
さて、今回でいよいよ最終回。
前回までにメインの処理は完成しているので、後はGUIアプリに昇華させるだけ。
インプットに必要な情報を指定するだけのシンプルな作りにしている。
画面詳細
- SQLディレクトリを選択する
- ディレクトリ内のファイルのみ対象とする
- 定義ブックを選択する
- Excelブック(*.xlsx)のみ指定可能
- 機能一覧シートの定義が必要
- テーブル一覧シートの定義が必要
- CRUD図作成処理を実行する
- SQLディレクトリと定義ブックを両方選択していない場合は処理中断
- 出力ファイルはExcelブック(*.xlsx)のみ指定可能
- CRUD図作成処理を実行
- CRUD図の作成に成功
- メッセージを出力し処理終了
- コンソールに処理結果を出力
- CRUD図の作成に失敗
- メッセージを出力し処理終了
実装
CrudMaker.fxmlCrudMaker.kt