注釈MyBatisのクエリを使用するには、2つの主要な方法があります。
まず、分割表のクエリを使用せずに二回のクエリ、そして仲間の統合、。
1、マッパーファイル:
1 @Select(「SELECT stu.id、stu.stu_key、stu.stu_no、stu.stu_name、stu.tel、stu.email_add、stu.birthdate、stu.gender、stu.school_id、stu.college_id、stu.major_id、 stu.class_id、stu.description、stu.remark、stu.create_date、WHERE stu.stu_key stu.update_date stu_info STU stuKey FROM} = {# " ) 2 @Results({ 3。 4。 @Result( 5 // 重要:カラム:外部キープロパティに関連する:エンティティ・クラス属性ではなく、フィールド、StuInfo内部 6 列= "school_id"、プロパティ= " schoolInfoは " 、 7 つ@One =(SELECT = "com.ahu.mapper.StuInfoMapper.getSchoolInfo" ) 。8 ) 9 }) 10 StuInfo showCompInfoByStuKey(文字列stuKey)。 11 12 @Select( "SELECT school_info.id、school_info.school_id、school_info.school_name、school_info.create_time、school_info.update_time、school_info.school_id =#{school_info.school_id} school_info FROM school_info.remark" ) 13 SchoolInfo getSchoolInfo() ;
2、StuInfoエンティティクラス
1 @Data 2 パブリック クラス StuInfo 実装シリアライズ{ 3。 4。 // @TableId(タイプ= IdType.AUTO)// 自己増力自己増力主キーを設定するための主キー・データベースの必要性 5。 非公開整数ID; 6 // stuKeyは、主キーとしてない使用戦略を使用して更新操作 7。 @TableField(updateStrategy = FieldStrategy.NEVER) 8。 プライベートストリングstuKey; 9 プライベート文字列stuno; 10 プライベート文字列stuname; 11 プライベート文字列のパスワード、 12は プライベート文字列電話; 13であります プライベート文字列emailAdd; 14 / ** 15 * @description:アノテーションは主@JsonFormat受信時刻形式に変換バックで 16 主として前後*注意@DataFormAT時間フォーマット変換 17。 * / 18である @JsonFormat(パターン= "MM-DD-YYYY"、タイムゾーン= "GMT + 8。" ) 19。 @DateTimeFormat(パターン= "MM-DD-YYYY" ) 20は プライベートA日生年月日; 21は、 プライベート文字列性別; 22は、 プライベートストリングschoolId; 23は、 プライベートストリングcollegeId。 24 プライベート文字列majorId; 25 プライベート文字列のclassid; 26 プライベート文字列の記述。 27 プライベート文字列の発言。 28 @JsonFormat(パターン= "YYYY-MM-DD HH:MM:SS"、時間帯= "GMT + 8" ) 29 @DateTimeFormat(パターン= "YYYY-MM-DD HH:MM:SS" ) 30 プライベート日付CREATEDATE ; 31 @JsonFormat(パターン= "YYYY-MM-DD HH:MM:SS"、時間帯= "GMT + 8" ) 32 @DateTimeFormat(パターン= "YYYY-MM-DD HH:MM:SS" ) 33 プライベート日付updateDate ; プライベートCLASSINFO CLASSINFO。 38 @TableField(が存在= 偽) 39 プライベートCollegeInfo collegeInfo。 40 @TableField(が存在= 偽) 41 プライベートMajorInfo majorInfo。 42 @TableField(が存在= 偽) 43 プライベートSchoolInfo schoolInfo。 44 }
第二に、リンクテーブルのクエリを使用して再度クエリ、。
1 @Select(「SELECT stu.id、stu.stu_key、stu.stu_no、stu.stu_name、stu.tel、stu.email_add、stu.birthdate、stu.gender、stu.school_id、sch.school_name、stu.college_id、 stu_info STU左からcol.college_name、stu.major_id、maj.major_name、stu.class_id、cla.class_name、stu.description、stu.remark、stu.create_date、stu.update_dateはschool_info SCH上stu.school_id = sch.school_id JOIN LEFT「はcollege_info COL ON stu.college_id = col.college_id LEFT JOINをmajor_info MAJ ON stu.major_id = maj.major_id LEFT JOINをclass_info CLA ON stu.class_id = cla.class_id stu.stu_key =#{stuKey} JOIN ) 2 @Resultsを({ 3 // @Result(カラム= "school_id"、プロパティ= "schoolId")、 4 @Result( 5 //重要:カラム:外部キー関連性:エンティティ・クラス属性ではなく、フィールド、StuInfo stuInfo内部 6 列=「school_id」、プロパティ=「schoolInfo.schoolId」)、 図7 @Result( 8は // マスターマッピングテーブルも行われ、または空ヌルである 。9 列= "school_id"、プロパティ= "schoolId" )、 10 @Result(カラム= "school_name"、プロパティ= "schoolInfo.schoolName" ) 。11 @Result(カラム= "college_id"、プロパティ= "collegeInfo.collegeId" )、 12は @Result(カラム= "college_id"、プロパティ= "collegeId" )、 13 @Result(カラム= "college_name"、プロパティ= "collegeInfo.collegeName")、 14 @Result(カラム= "major_id"、プロパティ= "majorInfo.majorId" )、 15 @Result(カラム= "major_id"、プロパティ= "majorId" )、 16 @Result(カラム= "major_name"、プロパティ= "majorInfo.majorName" )、 17 @Result(カラム= "CLASS_ID"、プロパティ= "classInfo.classId" )、 18 @Result(カラム= "CLASS_ID"、プロパティ= "CLASSID" )、 19 @Result(カラム= " CLASS_NAME」、プロパティ= "classInfo.className" )、 20 }) 21 StuInfo showCompInfoByStuKey(文字列stuKey)。
参考:
1、https://blog.csdn.net/qq_36228916/article/details/93881786