正文

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

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

分享到:

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

阅读(4531) | 评论(0)


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

评论

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