MapleBoot スキャフォールドにおける親子データ構造のコード生成手順

プロジェクト概要と技術スタック

本プロジェクトは、Spring Boot と Vue 3 をベースとした軽量な高速開発用フレームワークです。汎用的なバックエンドおよびフロントエンドテンプレートを提供し、システム管理機能の開発効率を向上させることを目的としています。継続的なアップデートにより、開発者の負担を軽減する機能を強化し続けています。

データベース設計の準備

コード生成を開始する前に、マスター(親)テーブルとディテール(子)テーブルに対応するデータベーススキーマを用意する必要があります。ここでは一般的なカテゴリ管理データを例として使用します。

親テーブル定義

CREATE TABLE `biz_category_main` (
    `main_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'メイン識別子',
    `category_name` VARCHAR(100) DEFAULT '' COMMENT 'カテゴリ名称',
    `category_key` VARCHAR(100) DEFAULT '' COMMENT 'カテゴリコード',
    `active_status` TINYINT DEFAULT 1 COMMENT '有効状態',
    `description` VARCHAR(500) DEFAULT NULL COMMENT '詳細説明',
    `created_by` BIGINT DEFAULT NULL COMMENT '作成者 ID',
    `create_timestamp` DATETIME DEFAULT NULL COMMENT '作成日時',
    `updated_by` BIGINT DEFAULT NULL COMMENT '更新者 ID',
    `update_timestamp` DATETIME DEFAULT NULL COMMENT '更新日時',
    PRIMARY KEY (`main_id`),
    UNIQUE KEY `uk_category_key` (`category_key`)
) ENGINE=InnoDB COMMENT='業務カテゴリ管理マスター';

子テーブル定義

CREATE TABLE `biz_category_detail` (
    `detail_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '項目識別子',
    `sort_order` INT DEFAULT 0 COMMENT '表示順序',
    `display_label` VARCHAR(100) DEFAULT '' COMMENT '表示ラベル',
    `storage_value` VARCHAR(100) DEFAULT '' COMMENT '格納値',
    `parent_key` VARCHAR(100) DEFAULT '' COMMENT '関連マスタキー',
    `style_class` VARCHAR(100) DEFAULT NULL COMMENT 'スタイリングクラス',
    `list_style` VARCHAR(100) DEFAULT NULL COMMENT 'リスト表示スタイル',
    `is_default` TINYINT DEFAULT 0 COMMENT '初期設定フラグ',
    `record_status` TINYINT DEFAULT 0 COMMENT 'レコード状態',
    `created_by` BIGINT DEFAULT NULL COMMENT '作成者 ID',
    `create_timestamp` DATETIME DEFAULT NULL COMMENT '作成日時',
    `updated_by` BIGINT DEFAULT NULL COMMENT '更新者 ID',
    `update_timestamp` DATETIME DEFAULT NULL COMMENT '更新日時',
    `comment_text` VARCHAR(500) DEFAULT NULL COMMENT '備考欄',
    PRIMARY KEY (`detail_id`)
) ENGINE=InnoDB COMMENT='業務カテゴリ管理ディテール';

ジェネレータの設定

生成ツールの設定ファイルを調整します。maple-admin-generator モジュール内の generator.yml を編集し、パッケージパスや接頭辞などを自身のプロジェクト構成に合わせて変更してください。

# コード生成設定
gen:
  # 開発担当情報
  author: internal-dev-team
  # リポジトリ名、system 以外に適用したい場合は修正
  packageName: com.mycompany.business
  # テーブル接頭辞の自動除去設定
  autoRemovePre: true
  # 除去対象プレフィックス(複数可)
  tablePrefix: biz_
  # ベースエンティティ継承の有無
  extendsBaseBean: true
  # BaseEntity クラスのフルパス
  baseBeanPackage: com.mycompany.common.base.BaseEntity
  # オブジェクト変換ユーティリティのパス
  transformUtilsPackage: com.mycompany.common.util.ObjMapper

コード生成の実行フロー

システム起動後、管理画面より「生成ツール」→「コード生成」メニューへアクセスします。

  1. テーブル登録: 必要なマスターとディテール両方のテーブルをリストにインポートします。
  2. 子テーブル設定: 一覧から子テーブルを選択し、単一テーブルモードとして設定を保存します。
  3. 親テーブル設定: マスターテーブルに対して以下の調整を行います。
    • 基本情報の維持。
    • 生成情報の設定で「システム管理」ディレクトリを選択。
    • 生成タイプを「ツリーテーブル」に変更。
  4. ツリー設定確認: 樹形コードには主キーフィールド、親コードには上位参照キーを使用します。デフォルトでは id/pid が割り当てられています。
  5. 出力: プレビューでコードを確認後、アーカイブファイルをダウンロードするか、エディタへのコピーを行います。

プロジェクトへの統合と実行

生成されたソースコードをターゲットのモジュールへ配置し、配布用の SQL スクリプトを実行してメニュー情報を登録します。メニュー権限は、該当するロールに対して付与してください。

アプリケーションを再起動し、適切な権限を持つアカウントでログインすると、新しく追加された機能用ページが表示されます。これにより、マスター・ディテール結合を含む CRUD 機能が完成します。

技術的注意事項

コードジェネレータは、標準的な CRUD インターフェースの構築に際して非常に高い生産性をもたらしますが、複雑なビジネスロジックや高度なカスタマイズが必要なケースでは、生成後の手動修正が不可欠となります。また、主キー名の統一(id など)や特定のユーティリティクラスへの依存など、一定の規約が前提となっています。プロジェクトの特性に応じて、生成されるテンプレートを調整することで、より最適な基盤を構築することが可能です。

タグ: spring-boot vue.js code-generation MyBatis database-schema

7月23日 23:02 投稿