単一データソースから複数データソースへの移行実践

本稿では、従来のJSP Webアプリケーションを単一データソースから複数データソース対応へ移行する実践的なアプローチについて解説します。対象プロジェクトはWAR形式でデプロイされ、JDK 1.7環境で動作するSpring MVCベースのシステムです(Spring Bootは未使用)。既存の単一データソースアーキテクチャを、複数のデータベースを動的に切り替えられる構成へ拡張する手法を ...

6月13日 17:51 投稿

レストラン配信アプリ - 料品情報の修正機能実装

機能要件と設計 インターフェース設計: IDによる料品の検索 カテゴリによる分類検索(実装済み) ファイルアップロード(実装済み) 料品情報の修正 まず、データの表示機能(回显)を実装し、次に修正機能を実装します。 IDによる料品検索 Controller層: @GetMapping("/{id}") @ApiOperation("IDで料品を検索") public Result<DishVO> fetchDishById(@PathVar ...

6月12日 16:52 投稿

MyBatis ソース解析:MappedStatement の初期化過程

前回の記事では、MappedStatement クラスが mapper.xml に定義された SQL 文を表すことを学びました。今回は、Configuration オブジェクトがどのように全ての mapper インターフェースを読み込み、それらを XML と結び付けるかを分析します。 まず、前回のソースコードを確認します: public <T> void addMapper(Class<T> type) { if (type.isInterface()) ...

6月11日 22:11 投稿

Javaにおけるクラスメタデータ取得とランタイムプロキシ設計の徹底解説

Javaのランタイム環境では、プログラム実行中にクラスの情報を読み取るメカニズムが存在します。これを反射(リフレクション)と呼びます。これにより、クラスローダー、フィールド、メソッド、コンストラクターなどのメタデータを動的に取得・操作できます。 あるインスタンスから対応するClassオブジェクトを取得する代表的な手法は以下の3つです。 public static void i ...

6月10日 19:42 投稿

Springにおけるトランザクション管理の実装と制御メカニズム

Spring FrameworkはJDBC操作を抽象化し、データベースアクセスを簡素化しますが、その過程で必ず直面する課題がトランザクション制御です。Springはこの要件に対応するため、柔軟かつ多層的なトランザクション管理機能を提供しています。 1. トランザクションの設定手法 Springでは、トランザクションの適用方法を大きく「宣言型」と「プログラム型」に分類できます。ど ...

6月9日 18:03 投稿

MyBatisプラグインの実装メカニズムとSpring統合の詳細解説

カスタムプラグインの実装手順 MyBatisプラグインを実装する際の基本的な手順は以下の通りです。 インターセプタの作成 まず、Interceptorインターフェースを実装するクラスを作成します。 public class PaginationInterceptor implements Interceptor { // 実装内容 } 主要メソッドの実装 インターセプタクラスでは以下の3つのメソッドを実装します。 intercep ...

6月8日 00:20 投稿

MyBatisの動的SQLでNULL値を含むフィールドの検索を解決する方法

課題 MyBatisの動的SQLを用いて、データベース(Oracle)からフィールド値にNULLが含まれるデータを検索する方法を解決します。 要件 フロントエンドから複数の値が渡され、その中に空値(NULL)が含まれる場合、バックエンドはそのフィールドがNULLのデータも検索結果に含める必要があります。 リスト形式のパラメータによる問題点 フロントエンドから複数選択された値が ...

6月7日 19:25 投稿

UniAppを使用した図書館自習室座席予約管理の微信ミニプログラム

この記事では、UniAppフレームワークを使用して開発された図書館自習室座席予約管理システムについて説明します。 UniAppとは UniAppは、Vue.jsを基にしたクロスプラットフォーム開発フレームワークです。これにより、一度のコーディングでiOS、Android、Web、そして様々なミニプログラムプラットフォームへとデプロイが可能です。 クロスプラットフォーム性: 一つのコー ...

6月7日 18:50 投稿

SpringとMyBatisの連携機構:@MapperScanから動的プロキシまでの実行フロー解析

Spring Context初期化におけるMyBatis統合の核心処理 Spring FrameworkがMyBatisと連携する際、その中心的な役割を果たすのが@MapperScanアノテーションです。本稿では、該当作付きアノテーションを契機としたBean定義の展開プロセス、インタフェースのプロキシ化ロジック、および関連する拡張ポイントの動作機制について詳解します。 1. @MapperScanとImportメカニズムの ...

6月7日 16:08 投稿

MyBatisの自己結合による多対一クエリ方法

現在、データベースのクエリ要件として、特定のニュースカテゴリのIDを与え、その親カテゴリ、親の親カテゴリといった情報を再帰的に取得する必要があります。 データベースのテーブル設計は以下の通りです。 エンティティクラスの設計: package model; public class Category { private Integer id; private String name; private Category parent; public Inte ...

6月5日 23:48 投稿