中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在mybatis中實現多對一關聯查詢

發布時間:2021-06-02 16:04:07 來源:億速云 閱讀:155 作者:Leah 欄目:開發技術

怎么在mybatis中實現多對一關聯查詢?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

第一種關聯方式

1.修改實體類Student,追加關聯屬性,用于封裝關聯的數據

修改完以后重新生成get set方法還有toString方法

private Teacher teacher;
private Classes classes;

2.修改TeacherMapper相關配置

1.接口類 增加

Teacher selectTeacherById(Integer tid);

2.xml映射文件 增加

<sql id="params">tid,tname</sql>
<select id="selectTeacherById" resultType="Teacher">
    select
    <include refid="params"></include>
    from teacher where tid=#{tid}
</select>

3.修改ClassesMapper 相關配置

1.接口類 增加

Classes selectClassesById(Integer cid);

2.xml映射文件 增加

<resultMap type="Classes" id="clsMap">
  <id property="cid" column="cid"></id>
  <result property="cname" column="cname"/>
 </resultMap>
 <select id="selectClassesById" resultMap="clsMap">
  select * from classes where cid = #{cid}
 </select>

4.修改StudentMapper 相關配置

1.接口類 增加

Student selectStudentById(Integer sid);

2.xml映射文件 增加

ps:

多對一關聯屬性配置:

        property:關聯對象名

        javaType:關聯對象類型

        select:引用的關聯查詢sql對應id名

        column:引用的關聯查詢sql語句需要的參數

<resultMap type="Student" id="stuMap">
  <id property="sid" column="sid"/>
  <result property="sname" column="sname"/>
  <result property="age" column="age"/>
  <result property="email" column="email"/>
  <association property="teacher" select="com.yc.dao.TeacherMapper.selectTeacherById" column="tid" javaType="Teacher"></association>
  <association property="classes" select="com.yc.dao.ClassesMapper.selectClassesById" column="cid" javaType="Classes"></association>
 </resultMap>
        <select id="selectStudentById" resultMap="stuMap">
  select * from student where sid = #{sid}
 </select>

5.測試代碼

@Test
 public void test1() {
  Student stu = studentMapper.selectStudentById(100001);
  System.out.println(stu);
 }

第二種配置方式

1.修改實體類Student,追加關聯屬性,用于封裝關聯的數據

跟前面一樣的

2.修改studentMapper.xml映射文件

ps:接口里面的方法還是跟原來一樣的

<resultMap type="Student" id="stuMap">
  <id property="sid" column="sid" />
  <result property="sname" column="sname" />
  <result property="age" column="age" />
  <result property="email" column="email" />
  <association property="teacher" javaType="Teacher">
   <id property="tid" column="tid"></id>
   <result property="tname" column="tname" />
  </association>
  <association property="classes" javaType="Classes">
   <id property="cid" column="cid"></id>
   <result property="cname" column="cname" />
  </association>
 </resultMap>
 <select id="selectStudentById" resultMap="stuMap">
  select * from student s,teacher t,classes c
  where s.sid=#{sid} and s.tid = t.tid and s.cid=c.cid
 </select>

小結一下:個人感覺第二種方法是會簡單許多,只是說,因為查詢語句中,連接條件的限制,當cid或者tid為空時,查詢到的數據就會是null,而第一種的話,如果只是cid為空,至少還是會顯示student和teacher的相關信息

第三種配置方式 全局映射

ps:student類和studentmapper接口類不變

1.修改全局配置文件的setting信息

<setting name="autoMappingBehavior" value="FULL" />
<setting name="mapUnderscoreToCamelCase" value="true" />

2. 修改studentMapper.xml映射文件

ps:

1.實體類的屬性名要和表字段名保存一致,或按照駝峰命名規則(屬性名:aColumn,字段名:A_COLUMN),settion屬性mapUnderscoreToCamelCase設置成true 

2.關聯表的字段名不能有相同的名字

<resultMap type="Student" id="stuMap">
  <association property="teacher" javaType="Teacher" />
  <association property="classes" javaType="Classes" />
 </resultMap>
 <select id="selectStudentById" resultMap="stuMap">
  select * from student s,teacher t,classes c where s.sid = #{sid} and
  s.tid=t.tid
  and s.cid=c.cid
 </select>

關于怎么在mybatis中實現多對一關聯查詢問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安庆市| 新和县| 那坡县| 永济市| 永川市| 花垣县| 葫芦岛市| 东明县| 南漳县| 东山县| 阳曲县| 额济纳旗| 乐安县| 乳山市| 务川| 象山县| 隆安县| 永平县| 琼中| 阿拉善右旗| 逊克县| 婺源县| 双鸭山市| 赤水市| 龙门县| 杭州市| 哈巴河县| 泸州市| 信宜市| 东乌珠穆沁旗| 大城县| 申扎县| 利津县| 蒙自县| 全南县| 宽甸| 达拉特旗| 广德县| 舟曲县| 盘山县| 浦城县|