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 投稿

Spring Boot と Vue.js を採用した WeChat 向け新生入学登録システムの実装ガイド

システム概要と技術スタック 本プロジェクトは、WeChat ミニプログラムを介して大学生の入学手続きを管理するための包括的なシステムです。バックエンドには高速な開発が可能な Spring Boot を採用し、フロントエンドにはコンポーネント指向の Vue.js を使用しています。データアクセス層では MyBatis を活用し、MySQL をデータベースとして選定しています。 1. バックエ ...

6月3日 20:23 投稿

Spring BootとMyBatisを用いたショッピングカート機能の実装

ショッピングカートの追加処理 ユーザーが商品をカートに追加する操作を実装するため、まずデータ転送オブジェクト(DTO)を定義します。このオブジェクトは、料理ID、セットメニューID、および料理の風味情報を受け取るために使用されます。 @Data public class CartItemAddRequest implements Serializable { private Long dishId; private Long m ...

6月3日 19:49 投稿

MyBatisにおける#{}と${}の違いとSQLインジェクション対策

MyBatisでSQLマップを使用してクエリを実行する際、動的にパラメータを渡す必要があることがよくあります。例えば、以下のようなSQL文があります: SELECT * FROM users WHERE user_id = #{userId} AND user_name = '${userName}' 動的SQLの解析段階において、#{ }と${ }は異なる挙動を示します: #{ }はJDBCのプリペアドステートメント(prepared statement)のパラメー ...

6月1日 23:31 投稿

Java 学習ノート 第1回

@MapperScanアノテーションを利用するには、pom.xmlに以下のような依存関係を追加する必要があります。 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.0</version> </dependency> @Mapperアノテーションを使用する場合も同様に、MyBatisの依存関係 ...

6月1日 22:22 投稿

SSHフレームワークのコントロール層構築

SSHフレームワークのコントロール層構築 1、コントロール層にPOと同等のVOオブジェクトを作成する package com.caicai.elec.contorl.vo; /* * VOは値オブジェクトであり、ページのプロパティ値に対応する * * VOオブジェクトとPOの共通点と相違点 * * 共通点:どちらもJavaBeanオブジェクトである * 相違点:POオブジェクトのプロパティ関係はデータベースフィー ...

6月1日 22:15 投稿

Java開発環境構築とSpring Bootプロジェクト設定ガイド

推奨リンク ---- リンク目次 Java環境構築 JDKインストール手順 Oracle公式サイトから最新の安定版JDKをダウンロードしてください JDKインストール後、JAVA_HOMEという環境変数を設定し、JDKのインストールパスを指すようにします。例えば:C:\Program Files\Java\jdk\jdk-21 (注:jdkとjdk-21は異なるバージョン管理のために作成したフォルダです) 次に、JAVA_HOME ...

6月1日 21:52 投稿

Spring Bootプロジェクトの作成と検索機能の実装(IntelliJ IDEA 2021使用)

1. Spring Bootプロジェクトの新規作成 IntelliJ IDEA 2021を使用してSpring Bootプロジェクトを新規作成します。プロジェクト作成後、必ず設定画面から自身がインストールしたMavenを指定してください。 2. データベース準備 MySQLデータベースを使用し、成語辞書用のテーブルを作成します。 CREATE TABLE idioms ( ID DOUBLE DEFAULT NULL, name VARCHAR(2 ...

6月1日 18:46 投稿

Spring Boot における EasyExcel を用いた大規模データの効率的なインポート・エクスポート

Spring Boot 環境で大規模な Excel データを扱う際、最も懸念されるのはメモリ不足(OOM)によるサーバーダウンです。従来の Apache POI はファイル全体をメモリ上に展開するため、数万行程度のデータでもリスクが生じます。これを回避し、処理速度を最大化するための標準的なアプローチが、阿里巴巴製の EasyExcel の導入です。 EasyExcel は SAX パーサーをベースとして ...

6月1日 10:26 投稿