一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - Mybatis 一對(duì)多和多對(duì)一關(guān)聯(lián)查詢問(wèn)題

Mybatis 一對(duì)多和多對(duì)一關(guān)聯(lián)查詢問(wèn)題

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

這篇文章主要介紹了Mybatis 一對(duì)多和多對(duì)一關(guān)聯(lián)查詢問(wèn)題,需要的朋友可以參考下

首先  數(shù)據(jù)庫(kù)量表之間字段關(guān)系(沒(méi)有主外鍵)

studentmajor表的id字段對(duì)應(yīng)student表里major字段

Mybatis 一對(duì)多和多對(duì)一關(guān)聯(lián)查詢問(wèn)題

兩個(gè)實(shí)體類

?
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;
  }
}

定義兩個(gè)接口

?
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();
  /**
   * 根據(jù)專業(yè)查人員,給一對(duì)多
   */
  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();
  /**
   * 根據(jù)主鍵查數(shù)據(jù),給多對(duì)一
   * @param id
   * @return
   */
  public StudentMajor select(Integer id);
}

定義兩個(gè)實(shí)體類的映射方法

?
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">
  <!-- 多對(duì)一查詢 -->
  <resultMap type="Student" id="slist">
    <!-- 跟一對(duì)一一樣用association標(biāo)簽,實(shí)體類定義的成員,要跟數(shù)據(jù)庫(kù)字段名對(duì)應(yīng)上 -->
    <association property="studentmajor" column="major"
    select="com.dao.StudentMajorMapper.select"/> <!-- 用接口里定義的方法,根據(jù)student表中的major字段查出對(duì)應(yīng)數(shù)據(jù) -->
  </resultMap>
  <!-- 查全部 -->
  <select id="selectall" resultMap="slist" >
    select * from student
  </select>
  <!-- 根據(jù)專業(yè)查人員 -->
  <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">
   <!-- 一對(duì)多查詢關(guān)聯(lián) -->
   <resultMap type="StudentMajor" id="slist">
     <!-- 實(shí)體類屬性對(duì)應(yīng)數(shù)據(jù)庫(kù)的主鍵字段,不然主鍵會(huì)查不到 -->
     <id property="id" column="id"/>
     <!-- 用collection標(biāo)簽 ,也是實(shí)體類屬性要對(duì)應(yīng)數(shù)據(jù)庫(kù)字段-->
     <collection property="students" column="id"
     select="com.dao.StudentMapper.selectz">
     </collection> 
   </resultMap>
   <!-- 全表查詢 -->
   <select id="selectAll" resultMap="slist">
     select * from studentmajor
   </select>
   <!-- 根據(jù)主鍵查 -->
   <select id="select" parameterType="Integer" resultType="StudentMajor">
     select * from studentmajor where id=#{id}
   </select>
 </mapper>

JUnit測(cè)試

?
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();
  }
  //一對(duì)多查詢
  public void test() {
    List<StudentMajor> list=smm.selectAll();
    for(StudentMajor a:list){
      System.out.println(a);
    }
  }
  //根據(jù)專業(yè)查人員,給一對(duì)多用
  public void selectz(){
    List<Student> l=sm.selectz(3);
    for(Student a:l){
      System.out.println(a);
    }
  }
  //多對(duì)一查詢
  @Test
  public void selectall() {
    List<Student> st=sm.selectall();
    for(Student tt:st){
      System.out.println(tt);
    }
  }
  //根據(jù)主鍵查詢,給多對(duì)一用
  public void select(){
    StudentMajor a=smm.select(1);
    System.out.println(a);
  }
}

一對(duì)多查詢結(jié)果

Mybatis 一對(duì)多和多對(duì)一關(guān)聯(lián)查詢問(wèn)題

多對(duì)一查詢結(jié)果

Mybatis 一對(duì)多和多對(duì)一關(guān)聯(lián)查詢問(wèn)題

以上所述是小編給大家介紹的Mybatis 一對(duì)多和多對(duì)一關(guān)聯(lián)查詢問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 玩乳h文奶水和尚 | 免费午夜剧场 | 美女被草出水 | 欧美日韩中文字幕久久伊人 | 日韩亚洲国产欧美精品 | 亚洲精品一区二区三区在线播放 | 男人女人性生活视频 | 门房秦大爷小说 | 私人影院在线播放 | 黑人女性猛交xxxxxⅹxx | 亚洲激情网站 | 国产一区二区三区在线观看视频 | 赤坂丽女医bd无删减在线观看 | 羞羞漫画免费漫画页面在线看漫画秋蝉 | 国产自一区 | 亚洲大片免费看 | 美女被网站 | 给我免费的视频在线观看 | 古代双性美人被老糟蹋 | 996免费视频国产在线播放 | 我在厨房摸岳的乳HD在线观看 | 四虎欧美| 精品无人区麻豆乱码无限制 | 午夜私人影院在线观看 | 999久久久 | 久久久久久久尹人综合网亚洲 | 婷婷综合七月激情啪啪 | 女人把私密部位张开让男人桶 | 美女脱了内裤打开腿让人羞羞软件 | 2021国产精品视频 | 国产麻豆剧果冻传媒观看免费视频 | 日本中文字幕永久在线 | 91午夜剧场 | 国产91第一页 | 精品99在线观看 | 免费又爽又黄禁片视频在线播放 | 国产成人www免费人成看片 | 国产极品久久 | 精品久久久久久久久久久 | 99国产自偷色久 | 欧美在线一级片 |