異なる状況を属性データベースのフィールド名とエンティティクラスの名前に遭遇するプロジェクトを書いている時点で1、利便性のためであるかもしれないことも、私たちはこの問題を解決するために何でもあり、他の要件もあり
次のようにデータベーステーブルがある準備
1 CREATE TABLEの注文を( 2 ORDER_ID INT PRIMARY KEY AUTO_INCREMENT、 3 ORDER_NO VARCHAR(20 )、 4 order_priceのFLOAT 5)。
私たちは、エンティティクラスのクラス定義を取りました
1 パブリック クラスの注文{ 2 プライベート int型のID。 3 プライベート文字列ORDERNO。 4 プライベート フロート価格; 5 }
我々は一貫性のない定義可視エンティティクラスとデータベーステーブルのフィールド名、このための2つのソリューションがあります
方法の一つ:別名SQL文を定義します
1 <ID = "selectOrder"のParameterType = "INT" resultTypeと= "_順序"を選択> 2 ORDER_ID IDを選択し、ORDER_NO ORDERNO、ORDER_ID =注文からorder_price価格#{ID} 3 </選択>
方法2:<このresultMap>によって解決
<SELECT ID = "selectOrderResultMap" ParameterTypeが= "INT"このresultMap = "orderResultMap"> セレクト * ORDER_ID =受注から#{ID} </選択> <このresultMapタイプ= "_オーダー" ID = "orderResultMap"> <idプロパティ= "ID"列= "ORDER_ID" /> <性をもたらす= "ORDERNO"欄= "ORDER_NO" /> <性をもたらす= "価格"列= "order_price" /> </このresultMap>
例えば、(ネスト(に関し協会クエリ結果に関連する)、以下にそれを説明します)
2.分割表のクエリを実装
定義されたエンティティクラス
教師のエンティティクラス
プライベート int型TID。 プライベート文字列TNAME。
学生のエンティティクラス
プライベート int型のSID。 プライベート文字列SNAME。 プライベート int型 CLASSID。
clazzエンティティクラス
プライベート int型のCID。 プライベート文字列CNAME。 プライベート int型TID。 プライベートティーチャー教師。 プライベートリスト<学生>学生。
前記clazzエンティティクラス、教師に対応するクラス、生徒の複数に対応するクラス
このとき、次のマッピングファイルClazzMapper.xml
一つの質問に多くの、多くの場合、我々は2つのソリューションを持つことができます
方法の一つ:セカンダリクエリ
方法2:連合テーブルのクエリ
。1 <?XMLバージョン= "1.0"エンコード= "UTF-8" ?> 2 <!DOCTYPE PUBLICをマッパ" - // mybatis.org//DTDマッパー3.0 // EN" 3 「http://mybatis.org/ DTD / 3-MyBatisの-mapper.dtd "。> 4。 <! - 名前空間:名前空間表現。今目的は、IDを区別するためである。- > 5 < マッパー名前空間= "com.zhiyou100.zhl.dao.ClazzDao" > 6 < このresultMapのタイプ= "com.zhiyou100.zhl.bean.Clazz" ID = "MYMAP" > 7 < ID 列= "C_ID" プロパティ= " カラム= "c_name" プロパティ= "CNAME" /> 9 < 結果カラム= "teacher_id" プロパティ= "TID" /> 10 < 関連のプロパティ= "教師" のJavaType = "com.zhiyou100.zhl.bean.Teacher" > 11 < ID カラム= "t_id" プロパティ= "TID" /> 12 < 結果カラム= "t_name" プロパティ= "TNAME" /> 13 </ 協会> 14 < コレクション・プロパティt_idとs.class_id = c.c_id C_ID =#{CID}。22 </ 選択> 23 24 </ マッパー>
ユニットテスト