国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

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

2019-11-26 12:30:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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

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

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;  }}
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è)接口

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);}
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í)體類的映射方法

<?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>
<?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è)試

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é)果

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

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 越西县| 察雅县| 南郑县| 林西县| 调兵山市| 镇安县| 尉氏县| 安西县| 新宁县| 吴堡县| 微山县| 恩平市| 犍为县| 樟树市| 浦城县| 锦屏县| 环江| 吉首市| 阜平县| 连州市| 光泽县| 荥经县| 巴中市| 永丰县| 商南县| 东莞市| 冀州市| 康保县| 亳州市| 呼伦贝尔市| 兰州市| 辉县市| 彩票| 香河县| 朝阳市| 辽阳县| 乌海市| 龙门县| 通道| 桓台县| 香格里拉县|