関連マップMyBatisの56-MyBatisのMyBatisの多くのマッピング研究(6個)の多くのマッピング関連付けマップ

:より転載多マッピングの学習(6)MyBatisの関連マッピングMyBatisの

彼は本当に、詳細な書き込み!

一般に、プライマリ外部キーに関連する多くのデータベースで使用される、外部キー関係マルチ、すなわちマルチ維持すべきです。

以下では、多くの関係でMyBatisの契約を見てする方法の簡単な例を与えます。

1.必要なjarパッケージをインポートし、プロジェクトを作成し、インポートdb.properties設定ファイル、インポートlog4j.propertiesの設定ファイル

2.これで2つのテーブルを作成し、データベースを作成します。

 

コードをコピー
-  `t_clazz`表構造
-  ----------------------------
DROP TABLE IFは `t_clazz`をEXISTS。
(TABLE `t_clazz`をCREATE
  `id`はint(11)NOT NULLと、
  `code`のVARCHAR(18)NOT NULLと、
  PRIMARY KEY( `id`)
)ENGINE = InnoDBのデフォルトの文字セット= UTF8。

-  ----------------------------
-  t_clazzのレコード
-  ----------------------------
`t_clazz`値にINSERT( '1'、 'クラス')。
`t_clazz`値にINSERT( '2'、 '第二級')。
コードをコピー

 

 

 

コードをコピー
-  `t_student`表構造
-  ----------------------------
DROP TABLE IFは `t_student`をEXISTS。
(TABLE `t_student`をCREATE
  `id`はint(11)NOT NULL AUTO_INCREMENT、
  `name`ののVARCHAR(18)NOT NULLと、
  `sex`のVARCHAR(3)NOT NULLと、
  `age`はint(11)NOT NULLと、
  `cid`はint(11)NOT NULLと、
  PRIMARY KEY( `id`)、
  KEY `cid`(` cid`)、
  FOREIGN KEY( `cid`)REFERENCES` cid` CONSTRAINT `t_clazz`(` id`)
)ENGINE = InnoDBのAUTO_INCREMENT = 4 DEFAULT CHARSET = UTF8。

-  ----------------------------
-  t_studentのレコード
-  ----------------------------
`t_student`値にINSERT( '1'、 'ジョン・ドウ'、 'M'、 '11'、 '1')。
`t_student`値にINSERT( '2'、 'ジョン・ドウ'、 'M'、 '12'、 '2')。
t_student`値( '3'、 '赤'、 'F'、 '13'、 '1') `。INSERT INTO。
コードをコピー

対応するエンティティクラスの調製

コードをコピー
パブリッククラス学生{

    民間の整数ID。
    プライベート文字列名;
    プライベート文字列のセックス。
    プライベート整数歳。
    //オブジェクトに関連するclazz
    プライベートClazzのclazz、
コードをコピー
コードをコピー
パブリッククラスClazz {

    民間の整数ID。
    プライベート文字列のコード;
    //学生のセットアソシアティブ
    プライベートリスト<学生>学生。
コードをコピー

4.対応するSQLマッピングファイルを書きます

ClazzMapper.xml

コードをコピー
<?xml version = "1.0" エンコード= "UTF-8"?>
<!DOCTYPEマッパーPUBLIC " -  // mybatis.org//DTDマッパー3.0 // EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<マッパーの名前空間= "com.dj.mapper.ClazzMapper">

    <選択し、ID = "selectClazzById" のParameterType = "int型" このresultMap = "clazzResultMap">
        t_clazz SELECT * FROMここID =#{ID}
    </ select>の
    <このresultMapタイプ= "com.dj.domain.Clazz" ID = "clazzResultMap">
        <IDプロパティ= "ID" 列= "ID" />
        <resultproperty = "コード" 欄= "コード" />
        <! - プロパティは、学生Clazzプロパティタイプのリターンを表し、
            列は、後にクエリパラメータとしてIDを表します
            fetchtypeは、遅延ロードを表明しました
            属性タイプに対応するのJavaTypeを表し 
            それはofType間型のセットを表し、
        - >
        <コレクションプロパティ= "学生" の列= "ID" fetchType = "怠惰" 
                JavaType = "ArrayListを" ofType = "com.dj.domain.Student" 
                選択= "com.dj.mapper.StudentMapper.selectStudentByClazzId">
                <IDプロパティ= "ID" 列= "ID" />
                <resultproperty = "名前" 欄= "名前" />
                <resultproperty = "性別" 欄= "セックス" />
                <resultproperty = "年齢" 列= "年齢" />
                </コレクション>
    </このresultMap>
    
    
</マッパー>
コードをコピー

StudentMapper.xml

コードをコピー
<?xml version = "1.0" エンコード= "UTF-8"?>
<!DOCTYPEマッパーPUBLIC " -  // mybatis.org//DTDマッパー3.0 // EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<! - 名前空間には、ユーザー定義の名前空間を参照します - >
<マッパーの名前空間= "com.dj.mapper.StudentMapper">

    <選択し、ID = "selectStudentByClazzId" のParameterType = "int型" resultTypeと= "com.dj.domain.Student">
        t_student SELECT * FROMここCID =#{ID}
    </ select>の
</マッパー>
コードをコピー

5.書き込みMyBatisの-config.xmlファイル

コードをコピー
<?xml version = "1.0" エンコード= "UTF-8"?>
<!DOCTYPE構成
  PUBLIC " -  // mybatis.org//DTDコンフィグ3.0 // EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
 <設定>
     <! - 外部ファイルの導入をDb.properties  - >
     <プロパティリソース= "db.properties" />
     <! -  MyBatisのログを使用する特定の実装を指定します。 - >
     <設定>
         <設定名= "logImpl" 値= "log4jの" />
     </設定>
     <! - 環境設定 - >
     <環境デフォルト= "mysqlの">
         <環境ID = "mysqlの">
             <! - トランザクション・タイプを指定します。 - >
             <トランザクションマネージャーのタイプ= "JDBC" />
                 <! - データソースがデータソース構成を指し、POOLED JDBC接続オブジェクトは、データソース接続プールを達成することです。 - >
             <データソースタイプ= "POOLED">
                 <プロパティ名= "ドライバ" 値= "$ {ドライバ}" />
                 <プロパティ名= "URL" の値= "$ {URL}" />
                 <プロパティ名= "ユーザ名" 値= "$ {ユーザー名}" />
                 <プロパティ名= "パスワード" 値= "$ {パスワード}" />
             </のdataSource>
         </環境>
     </環境>
     <! -  SQLマッピングファイルの場所 - >
     <マッパー>
         <マッパーリソース= "COM / DJ /マッパ/ StudentMapper.xml" />
         <マッパーリソース= "COM / DJ /マッパ/ ClazzMapper.xml" />
     </マッパー>
 </設定>
コードをコピー

6.mybatisプロキシオブジェクトマッパーインターフェースを介してMyBatisのアクセスを推奨し、オブジェクトがSQLSESSIONオブジェクトに関連付けられている、開発者がオブジェクトを介して直接データベースを操作する方法を呼び出すことができます。

注意:クラス名マッパーインタフェースオブジェクトは、以前のmapper.xml名前空間、メソッドおよびパラメータ名と一致するとmapper.xml構成と一致していなければならないタイプを返す必要があります。

パブリックインターフェイスClazzMapper {
    クラスIDに基づいて、//クエリ情報
    Clazz selectClazzById(IDをINT)。
    
}

7.テスト

コードをコピー
パブリッククラスOneToManyTest {
    
    公共の静的な無効メイン(文字列[]引数)が例外をスロー{
        InputStream InputStreamは= Resources.getResourceAsStream( "MyBatisの-config.xmlの");
        SqlSessionFactory sqlSessionFactory =新しいSqlSessionFactoryBuilder()(InputStreamを)構築します。
        SQLSESSION SQLSESSION = sqlSessionFactory.openSession()。
        //プロキシオブジェクトマッパーインタフェースを取得
        ClazzMapperマッパー= sqlSession.getMapper(ClazzMapper.class)。
        //インターフェイスのメソッド呼び出し
        Clazz clazz = mapper.selectClazzById(1)。
        一覧<学生>学生= clazz.getStudents();
        {:(学生学生学生)について
            System.out.println(学生)。
        }
        
    }

}
コードをコピー

結果は以下のようにコンソールで見ることができます。

 

テストは成功です。

おすすめ

転載: www.cnblogs.com/zhumengdexiaobai/p/11111969.html