検索
ホームページJava&#&チュートリアルSQLマッピングファイルのサンプルチュートリアル

SQL マッピング ファイル

MyBatis の真の力はマッピング ステートメントにあります。同等の機能を備えた jdbc と価格を比較すると、マッピング ファイルにより多くのコードが節約されます。 MyBatis は SQL に重点を置いて構築されています。

SQL マッピング ファイルには、次のトップレベル要素があります: (順番に)

cache は、指定された名前空間のキャッシュを構成します。

cache-ref は、他の名前空間からのキャッシュ設定を参照します。

resultMap は最も複雑かつ強力な要素であり、データベースの結果セットからオブジェクトをロードする方法を記述するために使用されます。

parameterMap は非推奨になりました。昔ながらのスタイルのパラメーター マッピング。インラインパラメータが優先されますが、この要素は将来削除される可能性があります。

SQL ブロックは再利用でき、他のステートメントからも参照できます。

insert マップの挿入ステートメント。

マッピング更新ステートメントを更新します。

delete マップの削除ステートメント。

マッピングクエリステートメントを選択します。

MyBatis は SQL に重点を置いて構築されており、通常のメソッドとは大きく異なります。

SQL マッピング ファイルには、いくつかのトップレベル要素があります (定義される順序で):

>mapper: マッピング ファイルのルート要素ノード。属性名前空間が 1 つだけあり、異なるマッパーを区別するために使用されます。グローバルに一意、名前空間にバインドされた DAO インターフェイスの完全な名前、つまりインターフェイス指向プログラミング。ここでのマッパーはインターフェースの実装クラスに相当します。

キャッシュ - 指定された名前空間のキャッシュを構成します。

cache-ref – 他の名前空間からのキャッシュ設定を参照します。

resultMap – データベースの結果セットからオブジェクトをロードする方法を記述するために使用される、最も複雑かつ強力な要素。

parameterMap – 非推奨になりました!昔ながらのスタイルのパラメーター マッピング。インラインパラメータが優先されますが、この要素は将来削除される可能性があります。ここには記録されません。

sql – 他のステートメントによって再利用および参照できる SQL ブロック。

insert - マッピング挿入ステートメント

update - マッピング更新ステートメント

delete - マッピング削除ステートメント

select - マッピングクエリステートメント

1: select を使用して条件付きクエリを完了します

ツールアイデアと mysql データベースを使用します

エンティティクラスを作成します

public class student {private int stuId;private String  stuName;private grade getGrade;private  int stuAge;public grade getGetGrade() {return getGrade;
    }public void setGetGrade(grade getGrade) {this.getGrade = getGrade;
    }public int getStuAge() {return stuAge;
    }   public student(int id,String name){

   }   public student(){}public void setStuAge(int stuAge) {this.stuAge = stuAge;
    }public int getStuId() {return stuId;
    }public void setStuId(int stuId) {this.stuId = stuId;
    }public String getStuName() {return stuName;
    }public void setStuName(String stuName) {this.stuName = stuName;
    }
}

select を使用して条件付きクエリを完了します

1: まず、resultType を使用するようにマッパーを設定します

<!--模糊查询   使用resultType返回结果集-->    
    <select>* from student where stuName like CONCAT('%',#{stuName},'%'</select>

テストクラス

 public  void Test() throws IOException {

        studentDao dao = MyBatis.getSessionTwo().getMapper(studentDao.class);
        List<student> list = dao.getAllStudentByLike("z");for (student item:list) {
            System.out.println("----------"+item.getStuName());
        }
}</student>

さらに、parameterType は、 javaBean 型

は、Mapper

 <!--模糊查询-->
    <select>select * from student where stuName like CONCAT('%',#{stuName},'%')</select>

を変更し、メソッドパラメータとしてテストクラスに直接HashMapコレクションを作成します

studentDao dao = MyBatis.getSessionTwo().getMapper(studentDao.class);
        Map<string> userMap = new HashMap<string>();
        userMap.put("stuName","z");
        List<student> list = dao.getAllStudentByLike(userMap);for (student item:list) {
            System.out.println("----------"+item.getStuName());
        }</student></string></string>

ただし、マップコレクションのキー値はクラス内のフィールド名と同じです。

2: resultMap を使用して 2 つのテーブル クエリを完了します

たとえば、student テーブルの主キー ID がクラス テーブルに関連付けられている場合、resultType を使用すると、その ID を表示することしかできませんが、実際には、クラス名に注目することが多いため、resultMap マッピングのカスタマイズ結果を使用する必要があります。

<resultmap>
<id></id>
        <result></result>
        <result>
       
    </result></resultmap>

//sql语句
select * from student,grade

resultType は、基本型と複雑なデータ型を含む戻り値の型を直接表します。

resultMap は、外部の resultMap への参照であり、resultMap に対応する ID は、戻り結果がどの resultMap にマップされるかを示します。 : 彼のアプリケーション シナリオは次のとおりです。データベース フィールド情報がオブジェクト属性と一致しない、またはマッピング結果を自由に制御するには複雑な結合クエリを実行する必要があります。

さらに、MyBatis の select 要素では、resultType と resultMap は本質的に同じであり、両方とも Map データ構造です。しかし、両方が同時に存在することはできません。

Three: resultMap の自動マッピング レベルを使用します

MyBatis は 3 つのマッピング レベルに分かれています

コレクション)

& gt; を除く: すべてに自動的に一致します

Set AutomAppingBehavior

 <settings>   <!--设置resultMap的自动映射级别为Full(自动匹配所有)--><setting></setting>   <!--FULL要大写··--> </settings>

c c c c c c はします値が設定されている場合、ResultMap でノードを構成する必要はありません。

4 属性の関連付け

前の結果は、JavaBean、基本データ型、およびパッケージ化クラスの特定の「単純型」属性にのみマッピングできます。 , etc./

しかし、複合型の属性をマッピングしたい場合は、複雑なクラス xing を使用する必要があります。つまり、javaBean には別の javaBean がありますが、関連付けは 1 対 1 の関連付けのみを処理します
れー

りー

りー

测试类里直接调用即可

六:前面说到association仅处理一对一的管理关系

    如果要处理一对多的关系,则需要使用collection,它与 association元素差不多,但它映射的属性是一个集合列表,即javaBean内部嵌套一个复杂数据类型属性。

javaBean

  private int gradeId;private String gradeName;private List<student> gatStudent;</student>
 <resultmap>
        <!--<id property="gradeId" column="gradeId"></id>
        <result property="gradeName" column="gradeName"></result>-->
        <collection>
             <!-- <id property="stuId" column="stuId"></id>
              <result property="stuName" column="stuName"></result>-->
        </collection>
    </resultmap>
 <!--查询对应年级的student-->
    <select>   select * from student,grade where stuGrade = gradeId and gradeId=1
    </select>

以上がSQLマッピングファイルのサンプルチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません