SQLマッピングファイルのサンプルチュートリアル

零下一度
リリース: 2017-07-17 15:15:58
オリジナル
1621 人が閲覧しました

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 id="getAllStudentByLike" parameterType="String" resultType="stu">* 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());
        }
}
ログイン後にコピー

さらに、parameterType は、 javaBean 型

は、Mapper

 <!--模糊查询-->
    <select id="getAllStudentByLike" parameterType="Map" resultType="stu">select * from student where stuName like CONCAT('%',#{stuName},'%')</select>
ログイン後にコピー

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

studentDao dao = MyBatis.getSessionTwo().getMapper(studentDao.class);
        Map<String,String> userMap = new HashMap<String, String>();
        userMap.put("stuName","z");
        List<student> list = dao.getAllStudentByLike(userMap);for (student item:list) {
            System.out.println("----------"+item.getStuName());
        }
ログイン後にコピー

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

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

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

<resultMap id="studentMap" type="entity.student">
<id property="stuId" column="stuId"></id>
        <result property="stuName" column="stuName"></result>
        <result property="gradeName" column="gradeName">
       
    </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 name="autoMappingBehavior" value="FULL" />   <!--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;
ログイン後にコピー
 <resultMap id="gradeMap" type="grade">
        <!--<id property="gradeId" column="gradeId"></id>
        <result property="gradeName" column="gradeName"></result>-->
        <collection property="gatStudent" ofType="stu">
             <!-- <id property="stuId" column="stuId"></id>
              <result property="stuName" column="stuName"></result>-->
        </collection>
    </resultMap>
ログイン後にコピー
 <!--查询对应年级的student-->
    <select id="getAll" resultMap="gradeMap">   select * from student,grade where stuGrade = gradeId and gradeId=1
    </select>
ログイン後にコピー

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!