表紙画像はMohamed HassanがPixabayに投稿したものです。
Service 層のビジネスロジックの整理が完了した後、次に考慮すべき問題は、データベース操作をどのように行い、関連データのクエリ、挿入などの操作を完了するかです。
SpringBoot アプリケーションでは、Dao 層が INSERT、DELETE、UPDATE、SELECT などのデータベース操作を行い、関連データテーブルの CRUD を完了します。Entity 層には、プログラムで必要なさまざまなデータを組み合わせた属性を持つエンティティクラスが含まれています。データベース操作を行う際、SQL 文内のパラメータは通常エンティティクラスの属性で置き換えられるため、エンティティクラスのオブジェクトはデータテーブルの 1 つのレコードとなることが多いです。
上記の文章のシナリオを例に、この記事では Dao 層がどのようにデータベース操作を完了し、Entity 層がどのように機能するかをわかりやすく説明します。
環境準備#
本機に MySQL 8 をデプロイし、Deepin 上でしばらく試行錯誤した結果、Debian 10 の apt リポジトリを利用して、ようやくインストールが完了しました。
MySQL で新しいデータベース project を作成し、その後、プロジェクト情報を記録するためのデータテーブル project_information を新規作成します:
ここで AUTO_INCREMENT は自動増分、NOT NULL は非 NULL 制約、PRIMARY KEY は主キー、COMMENT はコメントです。
SpringBoot プロジェクトに依存関係と接続情報を追加#
- 依存関係のインストール:前回の記事を参考にして、https://mvnrepository.com/ で自分のパッケージマネージャの依存関係のインストール方法を探してください。Gradle プロジェクトの場合、build.gradleの
dependencies{}に以下の情報を追加します:
- データ接続設定:application.propertiesに以下の情報を追加します:
ここで、{} で囲まれた内容は個人の実際の設定に応じて置き換える必要があります。私は MySQL 8.0 以上のバージョンを使用しているため、最後の行のドライバ名はcom.mysql.cj.jdbc.Driverに変更する必要があります。
操作情報を保存するためのエンティティクラスの作成#
上記で作成したデータテーブルからわかるように、1 つの操作記録には操作流水コード、操作名、プロジェクトコード、プロジェクト名、プロジェクト分類、操作時間が含まれます。操作流水コードはデータを挿入するたびに自動的に増加するため、実際の操作データには操作名、プロジェクトコード、プロジェクト名、プロジェクト分類、操作時間の 5 つの属性のみが含まれます。
Entity 層に新しいプロジェクト情報のエンティティクラス ProjectInformationEntity を作成して、1 回の操作に含まれるデータを整理します。クラスの定義は以下の通りです:
このクラスの各インスタンスは操作データを保存するために使用され、データベース操作を実行する際やビジネスロジックで操作データを使用する際には、オブジェクトの get メソッドを通じて関連パラメータを渡すことができます。この方法の利点は、各データ項目間の関係を明確にし、実際の使用時に混乱しないことです。
ビジネスロジックでは、以下のような関数を使用してエンティティクラスのオブジェクトを初期化できます:
データベース操作の作成#
Dao 層に新しい ProjectInformationDao クラスを作成して、いくつかのデータベース操作を行います。このクラスでは、JdbcTemplate を使用して関連操作を実装し、update メソッドを使用して INSERT の SQL 文を実行し、queryForObject メソッドを使用して単一データをクエリします。
まとめ#
今回の段階的成果は、SpringBoot アプリケーションでデータベース操作を呼び出してデータのクエリと保存を行うことですが、JdbcTemplate の使用は確かに少し古いかもしれません。次は、より先進的な方法で操作を行う予定です。
開発過程で、私は ChatGPT に多くの機能実装に関する質問をし、正確で実行可能な回答を得ました。これはある意味で私の効率を確実に向上させました。ChatGPT はほぼ私の百科事典のようになっていると感じています、ハハハハ。
参考記事#
mysql の datetime が java に対応する:https://juejin.cn/s/mysql%E4%B8%AD%E7%9A%84datetime%E5%AF%B9%E5%BA%94java
spring boot (三) 之 使用 JdbcTemplate で MySQL データベースにアクセスする:https://blog.csdn.net/weixin_45755816/article/details/118762188
Spring boot (四) 之データをデータベースに保存する:https://blog.csdn.net/weixin_45755816/article/details/118770441
Java で符号なし整数(unsigned int)を使用する方法:https://icejoywoo.github.io/2018/08/17/unsigned-number-in-java.html