(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)。 } }
プログラムの実施後の主な機能は以下の結果を得ました:
次のようにプログラムの構造は次のとおりです。