1件の関連の問い合わせをmybatis--

(1)データベースmybatisonetooneを作成

教師がクラスに対応する二つのテーブル、テーブルの教師とクラス教師テーブルクラス、クラスの先生に対応するクラスは、あります

需要はクラスID Queryクラス情報(教師との情報)に基づいており、

先生やクラスのテーブルを作成します。

データベースmybatisonetooneを作成します。
表教師の作成(
    t_id INT PRIMARY KEY AUTO_INCREMENT、
    t_name VARCHAR(20) 
)。
テーブルクラスを作成する(
    INT PRIMARY KEY AUTO_INCREMENTをC_ID、
    c_name VARCHAR(20)、
    INTはteacher_id 
)。

ALTER TABLEクラスADD制約は、FOREIGN KEY(teacher_id)REFERENCES教師(t_id)をfk_teacher_id。
教師のINSERT INTO(t_name)VALUES( 'LS1'); 
教師のINSERT INTO(t_name)VALUES( 'LS2'); 
クラス(c_name、teacher_id)VALUES( 'bj_a'、1)。INSERT INTO。
クラス(c_name、teacher_id)VALUES( 'bj_b'、2)。INSERT INTO。

(2)のconfig / config.xmlファイルを作成します。

<?xml version = "1.0"エンコード= "UTF-8"?> 
<DOCTYPE設定PUBLIC! " - // mybatis.org//DTDコンフィグ3.0 // EN" 
「http://mybatis.org/dtd/mybatis -3- config.dtd "> 
<構成> 

<環境デフォルト="開発"> 
	    <環境ID ="開発"> 
		<トランザクションマネージャータイプ=" JDBC "/> 
		<データソースのタイプ= "POOLED"> 
		<プロパティ名="ドライバ"値="はcom.mysql.jdbc.Driver」/> 
		<プロパティ名= "URL"の値= "はjdbc:mysqlの:// localhostを:3306 / mybatisonetoone" /> 
		<プロパティ名= "ユーザ名"値= "ルート" /> 
		<プロパティ名= "パスワード"値= "123456" /> 
		</のdataSource> 
		</環境> 
</環境> 

<マッパー> 
	    <! - http://www.yiibai.comによって//電源- >
	    <マッパー資源= "MyBatisの/豆/ ClassMapper.xml" /> 
</マッパー> 
</構成>

(3)は、2つのClass.classエンティティクラスとTeacher.classを実装

Class.class

パッケージmybatis.bean。

パブリッククラスClass { 
    プライベートint型のID。
    プライベート文字列名; 
    家庭教師の先生。

    パブリッククラス(){ 
    } 

    publicクラス(int型のID、文字列名、教師、教師){ 
        スーパー()。
        this.id = ID。
        this.name =名前; 
        this.teacher =教師。
    } 

    公共INTのgetId(){ 
        IDを返します。
    } 

    公共ボイドSETID(int型のID){ 
        this.id = ID。
    } 

    パブリック文字列のgetName(){ 
        戻り名。
    } 

    公共ボイドのsetName(文字列名){ 
        this.name =名。 
    }

    公共教師getTeacher(){ 
        戻り教師。
    } 

    公共ボイドsetTeacher(教師教師){ 
        this.teacher =教師。
    } 

    @Override 
    パブリック文字列のtoString(){ 
        リターン"クラス[ID =" + ID + "NAME =" +名+ "教師=" +教師+ "]"。
    } 
}

Teacher.java

パッケージmybatis.bean。

パブリッククラス教師{ 

     プライベートint型のID。
     プライベート文字列名; 

     パブリック教師(){ 
     } 

     公共教師(int型のID、文字列名){ 
         スーパー()。
         this.id = ID。
         this.name =名前; 
     } 

     公共INTのgetId(){ 
         IDを返します。
     } 

     公共ボイドSETID(int型のID){ 
         this.id = ID。
     } 

     パブリック文字列のgetName(){ 
         戻り名。
     } 

     公共ボイドのsetName(文字列名){ 
         this.name =名。
     } 

     @Override 
     パブリック文字列のtoString(){
         リターン"先生[ID =" + ID + "NAME =" +名+ "]"。
     } 
}

(4)とClassMapper.xmlを配置

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

<マッパー名前空間=" mybatis.bean.classMapper "> 
<! -根据ID查询到一个班级信息(带老师信息) - > 
<! -嵌套结果- > 
< ! -    
<id = "はgetClass"のParameterType = "INT"このresultMap = "ClassResultMap"を選択> 
方式一
クラスc、教師T c.teacher_id = t.t_idとc.c_id =#{ID} SELECT * FROMを
</選択> 
<このresultMapタイプ= "mybatis.bean.Class" ID = "ClassResultMap"> 
    <idプロパティ= "ID"列= "C_ID" /> 
    <結果プロパティ= "名前"欄= "c_name" /> 
    <関連付けプロパティ= "先生"の列= "teacher_id"のJavaType = "mybatis.bean.Teacher">
    <IDプロパティ= "ID"列= "t_id" /> 
    <結果プロパティ= "名前"欄= "t_name" /> 
</関連> 
</このresultMap> - > 
<! -嵌套查询- > 
< = "はgetClass"のParameterType = "INT"このresultMap = "ClassResultMap"> IDを選択し
    、選択*クラスからここC_ID =#{ID} 
</選択> 
<このresultMapタイプ= "mybatis.bean.Class" ID = "ClassResultMap"> 
    < IDプロパティ= "ID"列= "C_ID" /> 
    <結果プロパティ= "名前"欄= "c_name" /> 
    <関連性= "教師"欄= "teacher_id"のJavaType = "mybatis.bean.Teacher"を選択= "getTeacher "> 
    </関連> 
</このresultMap> 
<! -使用了SQL别名- > 
<選択のid =" getTeacher」のParameterType = "int型" resultTypeと= "mybatis.bean.Teacher">
    教師t_id =#{ID} FROM t_id ID、t_name名を選択
</選択> 
</マッパー>

(5)最後にMain.classクエリ動作を実行するように構成されました

パッケージのメイン; 
インポートするjava.io.Reader; 
輸入java.text.MessageFormatの。
輸入はjava.util.List; 

輸入mybatis.bean.Class。

輸入org.apache.ibatis.io.Resources。
輸入org.apache.ibatis.session.SqlSession。
輸入org.apache.ibatis.session.SqlSessionFactory; 
輸入org.apache.ibatis.session.SqlSessionFactoryBuilder。

パブリッククラスメイン{ 
	プライベート静的SqlSessionFactory sqlSessionFactory。
	プライベート静的リーダーリーダー。

	静的{ 
		{試みる
			リーダ= Resources.getResourceAsReader( "設定/ config.xmlの"); 
			sqlSessionFactory =新しいSqlSessionFactoryBuilder()構築(リーダー)。
		}キャッチ(例外e){ 
			e.printStackTrace();
		} 
	} 

	パブリック静的SqlSessionFactoryのgetSession(){ 
		リターンsqlSessionFactory。
	} 

	/ ** 
	 * @paramの引数
	 * / 
	パブリック静的な無効メイン(文字列[] args){ 
		// TODO自動生成方法スタブ
		SQLSESSIONセッション= sqlSessionFactory.openSession()。
		mybatis.bean.Class clazz = session.selectOne( "mybatis.bean.classMapper.getClass"、2)。
		System.out.println(clazz)。
	} 
}

プログラムの実施後の主な機能は以下の結果を得ました:

次のようにプログラムの構造は次のとおりです。

 

おすすめ

転載: www.cnblogs.com/longlyseul/p/11222149.html