正文

iBATIS的多对多映射配置方法(转)2012-09-19 15:04:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lovebugs/53814.html

分享到:

iBATIS的多对多映射配置方法和多对一映射配置方法差不多,不同的是,多对多映射,数据库设计上需要一个记录两个类关系的中间表,本文以学生-老师为例,在iBATIS的sqlmap中配置多对多关系。

iBATIS的多对多映射配置1,建表。数据库中三个表,分别为:

  1.  CREATE TABLE [student] (  
  2.  [id] [int] IDENTITY (1, 1) NOT NULL ,  
  3.  [name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,  
  4.  [birthday] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,  
  5.  CONSTRAINT [PK_student] PRIMARY KEY  CLUSTERED   
  6.  (  
  7.   [id]  
  8.  )  ON [PRIMARY]   
  9. ON [PRIMARY]  
  10. GO  
  11. --------------------------------------------------  
  12. CREATE TABLE [teacher] (  
  13.  [id] [int] IDENTITY (1, 1) NOT NULL ,  
  14.  [name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,  
  15.  [subject] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,  
  16.  CONSTRAINT [PK_teacher] PRIMARY KEY  CLUSTERED   
  17.  (  
  18.   [id]  
  19.  )  ON [PRIMARY]   
  20. ON [PRIMARY]  
  21. GO  
  22. ---------------------------------------------------  
  23. CREATE TABLE [student_teacher] (  
  24.  [studentid] [intNOT NULL ,  
  25.  [teacherid] [intNOT NULL ,  
  26.  CONSTRAINT [PK_student_teacher] PRIMARY KEY  CLUSTERED   
  27.  (  
  28.   [studentid],  
  29.   [teacherid]  
  30.  )  ON [PRIMARY]   
  31. ON [PRIMARY]  
  32. GO 

iBATIS的多对多映射配置2,准备数据

  1. insert into student(name,birthday) values('张三','1982-01-01')  
  2. insert into student(name,birthday) values('李四','1983-02-02')  
  3. insert into student(name,birthday) values('王五','1984-03-03')  
  4.  
  5. insert into student(name,birthday) values('赵六','1985-04-04')  
  6. insert into teacher(name,subject) values('Jerry','语文')  
  7. insert into teacher(name,subject) values('Tom','数学')  
  8.  
  9. insert into teacher(name,subject) values('Steven','英语')  
  10. insert into student_teacher(studentid,teacherid) values(1,1)  
  11. insert into student_teacher(studentid,teacherid) values(1,2)  
  12. insert into student_teacher(studentid,teacherid) values(2,1)  
  13. insert into student_teacher(studentid,teacherid) values(3,2) 

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

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

iBATIS的多对多映射配置4,总配置文件SqlMapConfig.xml内容如下:

  1. ﹤?xml version="1.0" encoding="UTF-8" ?﹥  
  2. ﹤!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"  
  3.     "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"﹥  
  4.  
  5. ﹤sqlMapConfig﹥  
  6.  
  7.  ﹤properties resource="com/lsm/cfg/jdbc.properties" /﹥  
  8.  ﹤transactionManager type="JDBC"﹥  
  9.   ﹤dataSource type="SIMPLE"﹥  
  10.    ﹤property value="${driver}" name="JDBC.Driver" /﹥  
  11.    ﹤property value="${url}" name="JDBC.ConnectionURL" /﹥  
  12.    ﹤property value="${username}" name="JDBC.Username" /﹥  
  13.    ﹤property value="${password}" name="JDBC.Password" /﹥  
  14.   ﹤/dataSource﹥  
  15.  ﹤/transactionManager﹥  
  16.  ﹤sqlMap resource="com/lsm/domain/Student.xml" /﹥  
  17.  ﹤sqlMap resource="com/lsm/domain/Teacher.xml" /﹥  
  18.  
  19. ﹤/sqlMapConfig﹥ 

iBATIS的多对多映射配置5,domain对象两个,Student 和 Teacher,如下:

Teacher.java

  1. package com.lsm.domain;  
  2. import java.util.List;  
  3. public class Teacher  
  4. {  
  5.  private int id;  
  6.  private String name;  
  7.  private String subject;  
  8.  private List students; //注意这里有个List类型的students,表示一个老师对应多个学生  
  9.    
  10.  public List getStudents()  
  11.  {  
  12.   return students;  
  13.  }  
  14.  public void setStudents(List students)  
  15.  {  
  16.   this.students = students;  
  17.  }  
  18.  //省略掉其他的getter and setter  
  19. }  
  20.  
  21. //Student.java  
  22. package com.lsm.domain;  
  23.  
  24. import java.util.List;  
  25.  
  26. public class Student  
  27. {  
  28.  private int id;  
  29.  private String name;  
  30.  private String birthday;  
  31.  private List teachers; //这里有一个list类型的teachers,表示一个学生有多个老师  
  32.    
  33.  public List getTeachers()  
  34.  {  
  35.   return teachers;  
  36.  }  
  37.  public void setTeachers(List teachers)  
  38.  {  
  39.   this.teachers = teachers;  
  40.  }  
  41.  //省略掉其他的getter and setter  


阅读(3026) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册