Mybatis中一对多映射详解 - 博客频道

更新: 2016-12-16 03:47 编辑:生活经验

1、建表

        一个讲师tutors可以教授一个或者多个课程course。这意味着讲师和课程之间存在一对多的映射关系。

        注意:在一对多关系中,数据库建表的时候外键一定是在多的那一方建立.

        建表语句:

        drop table courses;

        drop table tutors;

        如果需要可以使用 cascade constraints;

 

        create table tutors(tutor_id number primary key,      name

varchar2(50) not null,email varchar2(50),phone varchar2(15),     

addr_id number(11) references addresses (addr_id));

        create

table courses(course_id number primary key,name varchar2(100) not

null,description varchar2(512),start_date date ,end_date date ,tutor_id

number references tutors (tutor_id));

Mybatis中一对多映射详解 - 博客频道

       tutors 表的样例数据如下:             

        insert into tutors(tutor_id,name,email,phone,addr_id)values(1,'zs','zs@briup.com','123-456-7890',1);

        insert into tutors(tutor_id,name,email,phone,addr_id)values(2,'ls','ls@briup.com','111-222-3333',2);

        course 表的样例数据如下:          

        insert into

courses(course_id,name,description,start_date,end_date,tutor_id)

values(1,'JavaSE','JavaSE',to_date('2015-09-10','yyyy-mm-dd'),to_date('2016-02-10','yyyy-mm-dd'),1);

        insert into

courses(course_id,name,description,start_date,end_date,tutor_id)

values(2,'JavaEE','JavaEE',to_date('2015-09-10','yyyy-mm-dd'),to_date('2016-03-10','yyyy-mm-dd'),2);

        insert into

courses(course_id,name,description,start_date,end_date,tutor_id)

values(3,'MyBatis','MyBatis',to_date('2015-09-10','yyyy-mm-dd'),to_date('2016-02-20','yyyy-mm-dd'),1);

        在上述的表数据中,zs 讲师教授一个课程,而 ls 讲师教授两个课程 

2、实现pojoJava类:

        Tutor类

package com.mybatis.pojo;  

import java.util.List;  

publicclass Tutor{  

private Integer tutorId;    

private String name;    

下一页 余下全文

1 2 3 4

private String email;    

private PhoneNumber phone;  

private Address address;    

private List<Course> courses;  

public Tutor(Integer tutorId, String name, String email,  

                    PhoneNumber phone, Address address, List<Course> courses) {  

super();  

this.tutorId = tutorId;  

this.name = name;  

this.email = email;  

this.phone = phone;  

this.address = address;  

this.courses = courses;  

            }  

public Tutor() {  

super();  

            }  

@Override

public String toString() {  

return"Tutor [tutorId=" + tutorId + ", name=" + name  

                        + ", email=" + email + ", phone=" + phone  

                        + ", address=" + address + ", courses=" + courses + "]";  

            }  

public Integer getTutorId() {  

return tutorId;  

            }  

publicvoid setTutorId(Integer tutorId) {  

this.tutorId = tutorId;  

            }  

public String getName() {  

return name;  

            }  

publicvoid setName(String name) {  

this.name = name;  

            }  

public String getEmail() {  

return email;  

            }  

publicvoid setEmail(String email) {  

this.email = email;  

            }  

public PhoneNumber getPhone() {  

return phone;  

            }  

publicvoid setPhone(PhoneNumber phone) {  

this.phone = phone;  

            }  

public Address getAddress() {  

return address;  

            }  

publicvoid setAddress(Address address) {  

this.address = address;  

            }  

public List<Course> getCourses() {  

return courses;  

            }  

publicvoid setCourses(List<Course> courses) {  

this.courses = courses;  

            }               

        }  

Course类实现:

package com.mybatis.pojo;  

import java.util.Date;  

publicclass Course{  

private Integer courseId;    

private String name;    

private String description;    

private Date startDate;    

private Date endDate;  

public Course(Integer courseId, String name, String description,  

                    Date startDate, Date endDate) {  

super();  

this.courseId = courseId;  

this.name = name;  

this.description = description;  

this.startDate = startDate;  

this.endDate = endDate;  

            }  

public Course() {  

super();  

            }  

@Override

public String toString() {  

return"Course [courseId=" + courseId + ", name=" + name  

                        + ", description=" + description + ", startDate="

                        + startDate + ", endDate=" + endDate + "]";  

            }  

public Integer getCourseId() {  

return courseId;  

            }  

publicvoid setCourseId(Integer courseId) {  

this.courseId = courseId;  

            }  

public String getName() {  

return name;  

            }  

publicvoid setName(String name) {  

this.name = name;  

            }  

public String getDescription() {  

return description;  

            }  

publicvoid setDescription(String description) {  

this.description = description;  

            }  

public Date getStartDate() {  

return startDate;  

            }  

publicvoid setStartDate(Date startDate) {  

this.startDate = startDate;  

            }  

public Date getEndDate() {  

return endDate;  

            }  

publicvoid setEndDate(Date endDate) {  

this.endDate = endDate;  

            }    

        } 

配置完以上内容之后,我们需要进行配置文件中注册必要的config文件:

<?xmlversion="1.0"encoding="UTF-8"?>

 <!-- 进行dtd约束,其中-//mybatis.org//DTD Config 3.0//EN为公共约束,  

 http://mybatis.org/dtd/mybatis-3-config.dtd为获取网络中提供的dtd约束 -->

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"    

            "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<typeAliases>

<typeAliastype="com.mybatis.pojo.Address"alias="Address"/>

<typeAliastype="com.mybatis.pojo.Course"alias="Course"/>

<typeAliastype="com.mybatis.pojo.Tutor"alias="Tutor"/>

</typeAliases>

<typeHandlers>

<typeHandlerhandler="com.mybatis.handlers.PhoneNumberHandlers"/>

</typeHandlers>

<environmentsdefault="development">

<environmentid="development">

<transactionManagertype="JDBC"></transactionManager>

<dataSourcetype="POOLED">

<propertyname="driver"value="oracle.jdbc.driver.OracleDriver"/>

<propertyname="url"value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>

<propertyname="username"value="briup"/>

<propertyname="password"value="briup"/>

</dataSource>

</environment>

</environments>

<mappers>

<mapperresource="com/mybatis/mappers/One2ManyMapper.xml"/>

</mappers>

</configuration>