亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

iBATIS的多對多映射配置方法有哪些

發布時間:2021-12-07 11:08:29 來源:億速云 閱讀:121 作者:小新 欄目:編程語言

小編給大家分享一下iBATIS的多對多映射配置方法有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

iBATIS的多對多映射配置1,建表。數據庫中三個表,分別為:

 CREATE TABLE [student] (   [id] [int] IDENTITY (1, 1) NOT NULL ,   [name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,   [birthday] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,   CONSTRAINT [PK_student] PRIMARY KEY  CLUSTERED    (    [id]   )  ON [PRIMARY]   ) ON [PRIMARY]  GO  --------------------------------------------------  CREATE TABLE [teacher] (   [id] [int] IDENTITY (1, 1) NOT NULL ,   [name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,   [subject] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,   CONSTRAINT [PK_teacher] PRIMARY KEY  CLUSTERED    (    [id]   )  ON [PRIMARY]   ) ON [PRIMARY]  GO  ---------------------------------------------------  CREATE TABLE [student_teacher] (   [studentid] [int] NOT NULL ,   [teacherid] [int] NOT NULL ,   CONSTRAINT [PK_student_teacher] PRIMARY KEY  CLUSTERED    (    [studentid],    [teacherid]   )  ON [PRIMARY]   ) ON [PRIMARY]  GO

iBATIS的多對多映射配置2,準備數據

insert into student(name,birthday) values('張三','1982-01-01')  insert into student(name,birthday) values('李四','1983-02-02')  insert into student(name,birthday) values('王五','1984-03-03')   insert into student(name,birthday) values('趙六','1985-04-04')  insert into teacher(name,subject) values('Jerry','語文')  insert into teacher(name,subject) values('Tom','數學')   insert into teacher(name,subject) values('Steven','英語')  insert into student_teacher(studentid,teacherid) values(1,1)  insert into student_teacher(studentid,teacherid) values(1,2)  insert into student_teacher(studentid,teacherid) values(2,1)  insert into student_teacher(studentid,teacherid) values(3,2)

iBATIS的多對多映射配置3,properties文件內容如下:

driver=com.microsoft.jdbc.sqlserver.SQLServerDriver   url=jdbc:microsoft:sqlserver://localhost:1433;SelectMethod=cursor;DatabaseName=ibatistest   username=sa   password=000

iBATIS的多對多映射配置4,總配置文件SqlMapConfig.xml內容如下:

﹤?xml version="1.0" encoding="UTF-8" ?﹥  ﹤!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"      "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"﹥   ﹤sqlMapConfig﹥    ﹤properties resource="com/lsm/cfg/jdbc.properties" /﹥   ﹤transactionManager type="JDBC"﹥    ﹤dataSource type="SIMPLE"﹥     ﹤property value="${driver}" name="JDBC.Driver" /﹥     ﹤property value="${url}" name="JDBC.ConnectionURL" /﹥     ﹤property value="${username}" name="JDBC.Username" /﹥     ﹤property value="${password}" name="JDBC.Password" /﹥    ﹤/dataSource﹥   ﹤/transactionManager﹥   ﹤sqlMap resource="com/lsm/domain/Student.xml" /﹥   ﹤sqlMap resource="com/lsm/domain/Teacher.xml" /﹥   ﹤/sqlMapConfig﹥

iBATIS的多對多映射配置5,domain對象兩個,Student 和 Teacher,如下:

Teacher.java

package com.lsm.domain;  import java.util.List;  public class Teacher  {   private int id;   private String name;   private String subject;   private List students; //注意這里有個List類型的students,表示一個老師對應多個學生      public List getStudents()   {    return students;   }   public void setStudents(List students)   {    this.students = students;   }   //省略掉其他的getter and setter  }   //Student.java  package com.lsm.domain;   import java.util.List;   public class Student  {   private int id;   private String name;   private String birthday;   private List teachers; //這里有一個list類型的teachers,表示一個學生有多個老師      public List getTeachers()   {    return teachers;   }   public void setTeachers(List teachers)   {    this.teachers = teachers;   }   //省略掉其他的getter and setter  }

iBATIS的多對多映射配置6,sqlmap配置文件

Teacher.xml

﹤?xml version="1.0" encoding="UTF-8" ?﹥  !DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"        "http://ibatis.apache.org/dtd/sql-map-2.dtd"﹥          ﹤sqlMap namespace="teacher"﹥         ﹤typeAlias alias="Teacher" type="com.lsm.domain.Teacher" /﹥   ﹤typeAlias alias="Student" type="com.lsm.domain.Student" /﹥      ﹤resultMap class="Teacher" id="teacherBasicResultMap"﹥    ﹤result property="id" column="id"/﹥    ﹤result property="name" column="name"/﹥    ﹤result property="subject" column="subject"/﹥   ﹤/resultMap﹥   ﹤!-- 下面這個resultMap中有個students屬性,這個結果映射繼承自上面的結果映射    由于有了繼承,結果映射可以任意擴展--﹥   ﹤resultMap class="Teacher" id="teacherWithTeacherResultMap" extends="teacherBasicResultMap"﹥    ﹤result property="students" column="id" select="getStudentsByTeacherId"/﹥   ﹤/resultMap﹥   ﹤!-- 這個查詢中使用到了上面定義的結果映射,從而決定了查詢出來的Teacher中關聯出相關的students,在student.xml中配置相似,不再注釋。--﹥   ﹤select id="getTeachers" resultMap="teacherWithTeacherResultMap"﹥    ﹤!--[CDATA[     select * from teacher    ]]﹥   ﹤/select﹥      ﹤select id="getStudentsByTeacherId" resultClass="Student"﹥    ﹤![CDATA[      select s.* from student s,student_teacher st where s.id=st.studentid and st.teacherid=#value#   ]]--﹥   ﹤/select﹥              ﹤/sqlMap﹥   tudent.xml   ﹤?xml version="1.0" encoding="UTF-8" ?﹥  !DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"        "http://ibatis.apache.org/dtd/sql-map-2.dtd"﹥          ﹤sqlMap namespace="student"﹥         ﹤typeAlias alias="Student" type="com.lsm.domain.Student" /﹥   ﹤typeAlias alias="Teacher" type="com.lsm.domain.Teacher" /﹥      ﹤resultMap class="Student" id="studentBasicResultMap"﹥    ﹤result property="id" column="id"/﹥    ﹤result property="name" column="name"/﹥    ﹤result property="birthday" column="birthday"/﹥   ﹤/resultMap﹥      ﹤resultMap class="Student" id="studentWithTeacherResultMap" extends="studentBasicResultMap"﹥    ﹤result property="teachers" column="id" select="getTeachersByStudentId"/﹥   ﹤/resultMap﹥      ﹤select id="getStudents" resultMap="studentWithTeacherResultMap"﹥    ﹤!--[CDATA[     select * from student    ]]﹥   ﹤/select﹥      ﹤select id="getTeachersByStudentId" resultClass="Teacher"﹥    ﹤![CDATA[      select t.* from teacher t,student_teacher st where t.id=st.teacherid and st.studentid=#value#   ]]--﹥   ﹤/select﹥              ﹤/sqlMap﹥

iBATIS的多對多映射配置7,測試

 package com.lsm.test;   import java.io.Reader;  import java.sql.SQLException;  import java.util.List;  import com.ibatis.common.resources.Resources;  import com.ibatis.sqlmap.client.SqlMapClient;  import com.ibatis.sqlmap.client.SqlMapClientBuilder;  import com.lsm.domain.Student;  import com.lsm.domain.Teacher;   public class Many2Many  {    private static SqlMapClient sqlMapClient = null;   static  {    try   {     Reader reader = Resources.getResourceAsReader("com/lsm/cfg/SqlMapConfig.xml");     sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);    }    catch(Exception e)    {     e.printStackTrace();    }   }   /**    * @param args    */  public static void main(String[] args)   {    Many2Many m2m = new Many2Many();    List studentlist = null;    studentlist = m2m.getStudentInfo();    for(int i=0;i﹤studentlist.size();i++)    {     Student s = new Student();     s = (Student) studentlist.get(i);     System.out.println("name:"+s.getName() + "\t" + "birthday:"+s.getBirthday());     List tlist = s.getTeachers();     if(tlist!=null)     {      System.out.println("his teachers as follows:");      {       for(int ti=0;ti﹤tlist.size();ti++)       {        Teacher t = new Teacher();        t = (Teacher) tlist.get(ti);        System.out.println("teacher name:" + t.getName());       }      }     }    }        List teacherlist = null;    teacherlist = m2m.getTeacherInfo();    for(int i=0;i﹤teacherlist.size();i++)    {     Teacher t = new Teacher();     t = (Teacher) teacherlist.get(i);     System.out.println("name:"+t.getName() + "\t" + "subject:" + t.getSubject());     List slist = t.getStudents();     if(slist!=null)     {      System.out.println("his students as follows:");      for(int si=0;si﹤slist.size();si++)      {       Student s = new Student();       s = (Student) slist.get(si);       System.out.println("student name:"+s.getName());      }     }    }   }      // 獲取學生信息   public List getStudentInfo()   {    List studentList = null;    try   {     System.out.println("學生信息如下:");     studentList = sqlMapClient.queryForList("getStudents");    }    catch (SQLException e)    {     e.printStackTrace();    }    return studentList;   }      // 獲取老師信息  //  獲取學生信息   public List getTeacherInfo()   {    List studentList = null;    try   {     System.out.println("老師信息如下:");     studentList = sqlMapClient.queryForList("getTeachers");    }    catch (SQLException e)    {     e.printStackTrace();    }    return studentList;   }   }

8,輸出

學生信息如下:  name:張三 birthday:1982-01-01  his teachers as follows:  teacher name:Jerry  teacher name:Tom  name:李四 birthday:1983-02-02  his teachers as follows:  teacher name:Jerry  name:王五 birthday:1984-03-03  his teachers as follows:  teacher name:Tom  name:趙六 birthday:1985-04-04  his teachers as follows:  老師信息如下:  name:Jerry subject:語文  his students as follows:  student name:張三  student name:李四  name:Tom subject:數學  his students as follows:  student name:張三  student name:王五  name:Steven subject:英語  his students as follows:

查詢學生時帶出老師信息,查詢老師時帶出學生信息,說明多對多映射成功。

以上是“iBATIS的多對多映射配置方法有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

敖汉旗| 金湖县| 舒兰市| 洞口县| 水富县| 荔波县| 曲靖市| 南澳县| 靖西县| 平阴县| 抚顺市| 曲麻莱县| 乌什县| 蚌埠市| 收藏| 邵阳县| 永清县| 乐平市| 芦山县| 芮城县| 广丰县| 日土县| 乌拉特后旗| 古浪县| 依安县| 湄潭县| 万源市| 库尔勒市| 和平区| 藁城市| 保亭| 平乐县| 光泽县| 绥芬河市| 交口县| 容城县| 华池县| 哈密市| 南丰县| 东丽区| 达州市|