一貫性のない属性テーブル1.列名データベースとエンティティクラス。
あなたは解決するためにこのresultMapを使用することができます。
<選択し、ID = "のfindAll" このresultMap = " ユーザマップ "> を選択し、ID、ユーザ名、t_userから年齢 </ select>の < このresultMapタイプ="ユーザー" ID = " ユーザマップ "> <! - ID映射主键プロパティ是实体类的属性名欄是表中的列名 - > <idプロパティ= "ID"列= "ID" /> <resultプロパティ= "名前"欄= "userNameに" /> <プロパティ= "年齢"列を結果=」年齢"/> </このresultMap>
多くの処理MyBatisの2.
表は1つに、多くのユーザーとロールの関係を示しています
3.javaクラス構造
Userクラス:User.java
パブリック クラスユーザーが実装Serializableを{ プライベート int型のIDを、 プライベート文字列名; プライベート int型の年齢; プライベート int型roleId。 民間の役割の役割。 公共 INT のgetId(){ 戻りID。 } 公共 ボイド SETID(int型のID){ この .ID = ID。 } パブリック文字列のgetName(){ 戻り名。 } 公共 のボイドsetName(文字列名){ この .nameの= 名前。 } 公共 INT getAge(){ 戻り年齢; } 公共 ボイド setAge(int型の年齢){ この .age = 年齢。 } 公共 INT getRoleId(){ 戻りroleIdと、 } 公共 ボイド setRoleId(INT roleId){ この .roleId = roleId。 } 公共の役割getRole(){ 戻り役割。 } 公共 ボイドsetRole(ロール役割){ この .role = 役割。 } @Override パブリック文字列のtoString(){ 戻り "ユーザー[ID =" + ID + "NAME =" +名+ "年齢=" +年齢+ "roleId =" + roleId + "役割=" +役割+ "]" ; } }
役割カテゴリ:Role.java
パブリック クラス役割{ プライベート int型のID。 プライベート文字列名; 公共 INT のgetId(){ 戻りID。 } 公共 ボイド SETID(int型のID){ この .ID = ID。 } パブリック文字列のgetName(){ 戻り名。 } 公共 ボイドのsetName(文字列名){ この .nameの= 名前。 } @Override パブリック文字列のtoString(){ リターン"ロール[ID =" + ID + "NAME =" +名+ "]" 。 } }
4.マッピング関係----二つのテーブルのSQL文を通じて仲間
<マッパー名前空間= "cn.sxt.vo.UserMapper"> <ID = "のfindAll"を選択このresultMap = " ユーザマップを "> UIDとしてu.id選択u.nameのuname、uageとしてu.ageとして roleId、R。 RNAMEとして名前t_user U、t_role R ここu.roleId = r.id </選択> < このresultMapタイプ= "ユーザー" ID = " ユーザマップ "> < IDのプロパティ=" ID"列= "UID" /> < 結果プロパティ= "名前"欄= "は、uname" /> <結果プロパティ=」マップ関連するオブジェクト - >年齢」欄= "uage" /> <resultプロパティ= "roleId"欄= "roleId" /> <! - < 関連付けプロパティ= "役割"列= "roleId"のJavaType = "役割"> <idプロパティ= "ID"列= "roleId" /> <結果プロパティ= "名前"欄= "RNAME" /> </関連> </このresultMap> </マッパー>
5.テスト
@Test 公共 ボイド testFindAll()スローのIOException { SQLSESSIONセッション = MybatisUtil.getSqlSessionを(); リスト <ユーザ>リスト= session.selectList( "cn.sxt.vo.UserMapper.findAll" ); 用(ユーザU:リスト){ System.out.printlnは(U)。 } session.close()。 }