激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - Mybatis 一對多和多對一關聯查詢問題

Mybatis 一對多和多對一關聯查詢問題

2020-09-16 15:38濫好人 JAVA教程

這篇文章主要介紹了Mybatis 一對多和多對一關聯查詢問題,需要的朋友可以參考下

首先  數據庫量表之間字段關系(沒有主外鍵)

studentmajor表的id字段對應student表里major字段

Mybatis 一對多和多對一關聯查詢問題

兩個實體類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.model;
import java.util.Date;
public class Student {
  private Integer sno;
  private String sname;
  private String ssex;
  private Integer sclass;
  private StudentMajor studentmajor;
  public Student() {
    super();
  }
  public Student(Integer sno, String sname, String ssex, Integer sclass, StudentMajor studentmajor) {
    super();
    this.sno = sno;
    this.sname = sname;
    this.ssex = ssex;
    this.sclass = sclass;
    this.studentmajor = studentmajor;
  }
  public StudentMajor getStudentmajor() {
    return studentmajor;
  }
  public void setStudentmajor(StudentMajor studentmajor) {
    this.studentmajor = studentmajor;
  }
  public Integer getSno() {
    return sno;
  }
  public void setSno(Integer sno) {
    this.sno = sno;
  }
  public String getSname() {
    return sname;
  }
  public void setSname(String sname) {
    this.sname = sname;
  }
  public String getSsex() {
    return ssex;
  }
  public void setSsex(String ssex) {
    this.ssex = ssex;
  }
  @Override
  public String toString() {
    return "Student [sno=" + sno + ", sname=" + sname + ", ssex=" + ssex + ", sclass=" + sclass + ", studentmajor="
        + studentmajor + "]";
  }
  public Integer getSclass() {
    return sclass;
  }
  public void setSclass(Integer sclass) {
    this.sclass = sclass;
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package com.model;
import java.util.List;
public class StudentMajor {
  private Integer id;
  private String mcode;
  private String mname;
  private List<Student> students;
  public StudentMajor() {
    super();
  }
  public StudentMajor(Integer id, String mcode, String mname, List<Student> students) {
    super();
    this.id = id;
    this.mcode = mcode;
    this.mname = mname;
    this.students = students;
  }
  @Override
  public String toString() {
    return "StudentMajor [id=" + id + ", mcode=" + mcode + ", mname=" + mname + ", students=" + students + "]";
  }
  public Integer getId() {
    return id;
  }
  public void setId(Integer id) {
    this.id = id;
  }
  public String getMcode() {
    return mcode;
  }
  public void setMcode(String mcode) {
    this.mcode = mcode;
  }
  public String getMname() {
    return mname;
  }
  public void setMname(String mname) {
    this.mname = mname;
  }
  public List<Student> getStudents() {
    return students;
  }
  public void setStudents(List<Student> students) {
    this.students = students;
  }
}

定義兩個接口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.dao;
import java.util.List;
import java.util.Map;
import com.model.Student;
public interface StudentMapper {
  /**
   * 全表查詢
   */
  public List<Student> selectall();
  /**
   * 根據專業查人員,給一對多
   */
  public List<Student> selectz(Integer major);
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.dao;
import java.util.List;
import com.model.StudentMajor;
public interface StudentMajorMapper {
  /**
   * 全表查詢
   * @return
   */
  public List<StudentMajor> selectAll();
  /**
   * 根據主鍵查數據,給多對一
   * @param id
   * @return
   */
  public StudentMajor select(Integer id);
}

定義兩個實體類的映射方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.dao.StudentMapper">
  <!-- 多對一查詢 -->
  <resultMap type="Student" id="slist">
    <!-- 跟一對一一樣用association標簽,實體類定義的成員,要跟數據庫字段名對應上 -->
    <association property="studentmajor" column="major"
    select="com.dao.StudentMajorMapper.select"/> <!-- 用接口里定義的方法,根據student表中的major字段查出對應數據 -->
  </resultMap>
  <!-- 查全部 -->
  <select id="selectall" resultMap="slist" >
    select * from student
  </select>
  <!-- 根據專業查人員 -->
  <select id="selectz" parameterType="Integer" resultType="student">
    select * from student s where s.major=#{major}
  </select>
 </mapper>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.dao.StudentMajorMapper">
   <!-- 一對多查詢關聯 -->
   <resultMap type="StudentMajor" id="slist">
     <!-- 實體類屬性對應數據庫的主鍵字段,不然主鍵會查不到 -->
     <id property="id" column="id"/>
     <!-- 用collection標簽 ,也是實體類屬性要對應數據庫字段-->
     <collection property="students" column="id"
     select="com.dao.StudentMapper.selectz">
     </collection> 
   </resultMap>
   <!-- 全表查詢 -->
   <select id="selectAll" resultMap="slist">
     select * from studentmajor
   </select>
   <!-- 根據主鍵查 -->
   <select id="select" parameterType="Integer" resultType="StudentMajor">
     select * from studentmajor where id=#{id}
   </select>
 </mapper>

JUnit測試

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.util;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.dao.StudentMajorMapper;
import com.dao.StudentMapper;
import com.model.Student;
import com.model.StudentMajor;
public class JJJtest {
  private SqlSession ss;
  private StudentMapper sm;
  private StudentMajorMapper smm;
  @Before
  public void setUp() throws Exception {
    ss=SqlSessionUtil.getSqlSession();
    sm=ss.getMapper(StudentMapper.class);
    smm=ss.getMapper(StudentMajorMapper.class);
  }
  @After
  public void tearDown() throws Exception {
    ss.commit();
    ss.close();
  }
  //一對多查詢
  public void test() {
    List<StudentMajor> list=smm.selectAll();
    for(StudentMajor a:list){
      System.out.println(a);
    }
  }
  //根據專業查人員,給一對多用
  public void selectz(){
    List<Student> l=sm.selectz(3);
    for(Student a:l){
      System.out.println(a);
    }
  }
  //多對一查詢
  @Test
  public void selectall() {
    List<Student> st=sm.selectall();
    for(Student tt:st){
      System.out.println(tt);
    }
  }
  //根據主鍵查詢,給多對一用
  public void select(){
    StudentMajor a=smm.select(1);
    System.out.println(a);
  }
}

一對多查詢結果

Mybatis 一對多和多對一關聯查詢問題

多對一查詢結果

Mybatis 一對多和多對一關聯查詢問題

以上所述是小編給大家介紹的Mybatis 一對多和多對一關聯查詢問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/hq233/archive/2017/04/23/6752335.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产女厕一区二区三区在线视 | 免费黄色短视频网站 | 禁漫天堂久久久久久久久久 | 亚洲资源在线播放 | 日韩视频1 | 在线免费小视频 | 欧美成人鲁丝片在线观看 | 中文在线观看免费视频 | 在线成人亚洲 | 羞羞的视频免费观看 | 色就操| 午夜丰满少妇高清毛片1000部 | 美国黄色毛片女人性生活片 | 久久久久久久久久久综合 | 在线观看中文字幕av | 国产成年人小视频 | 福利在线播放 | 在线观看国产网站 | 日韩精品中文字幕一区 | 国产成人高清在线观看 | 国产精品亚洲精品久久 | 欧美中文在线 | 亚洲成人高清在线观看 | 中文日韩 | 精品久久久一二三区播放播放播放视频 | 一区二区三区日韩在线观看 | 精品一区二区三区免费毛片爱 | 91精品国| 万圣街在线观看免费完整版 | 嗯~啊~弄嗯~啊h高潮视频 | 九九热精品在线 | 国产精品免费在线 | 加勒比综合 | 国产另类一区 | 一区二区三区四区在线观看视频 | 免费国产网站 | 91超在线 | 91成| 91美女视频在线 | 精品亚洲va在线va天堂资源站 | 日韩精品a在线观看 |