0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【個人学習】boot_two_MemberDaoMapper.javaを読んでアノテーションベースMyBatisのSQL記述とセキュリティ上の留意点を理解した

0
Posted at

対象ファイル

  • src/main/java/co/kr/two/mapper/MemberDaoMapper.java(アノテーションベース MyBatis マッパーインターフェース)

はじめに

今回は boot_two プロジェクトのアノテーションベース MyBatis マッパーインターフェースである MemberDaoMapper.java を分析した。
XML ファイルを使わず、Java インターフェース内に @Select などのアノテーションを直接記述して SQL 実行やパラメータバインディングを処理する仕組みについて整理してみた。


概要と基本情報

  • ファイルパス: src/main/java/co/kr/two/mapper/MemberDaoMapper.java
  • 種類: MyBatis Mapper Interface (Annotation-based)
  • パッケージ: co.kr.two.mapper
  • 主要構成要素: @Mapper, @Select, @Insert, @Update, @Delete, @Param

主要構成要素およびコードの詳細

構成要素 コード / 説明 役割および詳細内容
Package package co.kr.two.mapper; アノテーションベースのマッパーインターフェースが位置するパッケージの宣言
Annotation @Mapper MyBatis マッパーとして登録し、動的プロキシ実装体の自動生成および Spring Bean 登録を実行
Search List (Map) @Select(...)
getMemberList(Map<String, String> map)
Map パラメーターを受け取り、検索条件に応じた会員一覧を取得
Search List (@Param) @Select(...)
getMemberList2(@Param("sel") ..., @Param("sea") ...)
@Param アノテーションで明示的にパラメータ名をマッピングし、動的検索一覧を取得
View Method @Select(...)
getMemberView(@Param("id") String id)
特定 ID に該当する会員詳細情報を取得し MemberDto へマッピング
CUD Placeholder Methods memberSave(), memberUpdate(), memberDelete() 登録・修正・削除処理のためのメソッド宣言(現在 SQL 文字列は空状態)

技術的評価および改善ポイント

1. SQL インジェクションの脆弱性への注意

検索処理において ${} 構文(文字列置換)が使用されている場合がある。カラム名や動的 SQL 構成以外の一般的な検索語入力に対しては、SQL インジェクション防止のため #{}(PreparedStatement バインディング)を使用するか、XML マッパーの動的 SQL への移行が推奨される。

2. CUD アノテーション SQL の実装

@Insert、@Update、@Delete アノテーション内の SQL 構文が現在空文字列となっているため、実際の DB 操作を実行するには適切な SQL 構文の追加が必要となる。


構成要素のまとめ

区分 要素名 役割
Annotation @Mapper アノテーションベースでの MyBatis 動的プロキシ生成
Query Definition @Select, @Param Java コード内での直接的な SQL 記述とパラメータバインディング
Security Note #{} vs ${} セキュリティを考慮した安全なバインディング方式の選択

今回学んだこと

  • XML ファイルを介さず、Java アノテーションで直接 SQL を定義するアノテーションベース MyBatis の仕組みを理解できた
  • 動的クエリ記述時における SQL インジェクション対策や、パラメータバインディングのセキュリティ上の重要性を再確認できた
  • 次のファイル分析へと進んでいきたい。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?