黄瑞生0127
编写代码实现Hibernate关联映射。
学生与身份证是一对一关联;
学生实体类:
package com.hrs.entity;
public class Student {
private Integer StudentId;
private Idcard idcard;
public Idcard getIdcard() {
return idcard;
}
public void setIdcard(Idcard idcard) {
this.idcard = idcard;
}
public Integer getStudentId() {
return StudentId;
}
public void setStudentId(Integer studentId) {
StudentId = studentId;
}
public String getStudentName() {
return StudentName;
}
public void setStudentName(String studentName) {
StudentName = studentName;
}
public Integer getStudentage() {
return Studentage;
}
public void setStudentage(Integer studentage) {
Studentage = studentage;
}
private String StudentName;
private Integer Studentage;
}
身份证实体类:
package com.hrs.entity;
public class Idcard {
private Integer cardid;
private Integer cardnum;
private String cardadd;
private Student stdent;
public Student getStdent() {
return stdent;
}
public void setStdent(Student stdent) {
this.stdent = stdent;
}
public Integer getCardid() {
return cardid;
}
public void setCardid(Integer cardid) {
this.cardid = cardid;
}
public Integer getCardnum() {
return cardnum;
}
public void setCardnum(Integer cardnum) {
this.cardnum = cardnum;
}
public String getCardadd() {
return cardadd;
}
public void setCardadd(String cardadd) {
this.cardadd = cardadd;
}
}
学生类映射文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 配置类和表对应
class标签
name属性:实体类全路径
table属性:数据库表名称 -->
<class name="com.hrs.entity.Student" table="testStudent">
<id name="StudentId" column="StudentId" type="java.lang.Integer">
<generator class="foregin">
<param name="property"> student</param>
</generator>
</id>
<property name="StudentName" column="cardnum" type="java.lang.String"></property>
<property name="Studentage" column="Studentage" type="java.lang.Integer"></property>
<!-- 在用户映射文件中,表示所有角色
使用set标签使用所有联系人,set标签里面有name属性,
属性值写在用户实体类里面表示角色的set集合名称
table属性:写第三张表名称-->
<!-- 一对多建表有外键,hibernate机制:双向维护外键,在一和多的那一方都配置外键
column属性值:当前映射文件在第三张表的外键名称 -->
<!-- class里面写角色实体类全路径 column里面写角色在第三张表外键名称 -->
<one-to-one name="com.hrs.entity.Idcard" constrained="true"></one-to-one>
</class>
</hibernate-mapping>
身份证类映射文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 配置类和表对应
class标签
name属性:实体类全路径
table属性:数据库表名称 -->
<class name="com.hrs.entity.Idcard" table="testIdcard">
<id name="cardid" column="cardid" type="java.lang.Integer">
<generator class="native"></generator>
</id>
<property name="cardnum" column="cardnum" type="java.lang.Integer"></property>
<property name="cardadd" column="cardadd" type="java.lang.String"></property>
<!-- 在用户映射文件中,表示所有角色
使用set标签使用所有联系人,set标签里面有name属性,
属性值写在用户实体类里面表示角色的set集合名称
table属性:写第三张表名称-->
<!-- 一对多建表有外键,hibernate机制:双向维护外键,在一和多的那一方都配置外键
column属性值:当前映射文件在第三张表的外键名称 -->
<!-- class里面写角色实体类全路径 column里面写角色在第三张表外键名称 -->
</class>
</hibernate-mapping>
学生与角色是一对多关联;
学生实体类:
import java.util.HashSet;
import java.util.Set;
public class Student {
private Integer StudentId;
private String StudentName;
private Integer Studentage;
public Set<Role> getRoleSet() {
return RoleSet;
}
public void setRoleSet(Set<Role> roleSet) {
RoleSet = roleSet;
}
private Set <Role> RoleSet=new HashSet<Role>();
public Integer getStudentId() {
return StudentId;
}
public void setStudentId(Integer studentId) {
StudentId = studentId;
}
public String getStudentName() {
return StudentName;
}
public void setStudentName(String studentName) {
StudentName = studentName;
}
public Integer getStudentage() {
return Studentage;
}
public void setStudentage(Integer studentage) {
Studentage = studentage;
}
}
在这里插入代码片
角色实体类:
package com.hrs.entity;
public class Role {
private Integer role_id;
private String role_name;
private String role_memo;//角色类型
private Student student;
public Integer getRole_id() {
return role_id;
}
public void setRole_id(Integer role_id) {
this.role_id = role_id;
}
public String getRole_name() {
return role_name;
}
public void setRole_name(String role_name) {
this.role_name = role_name;
}
public String getRole_memo() {
return role_memo;
}
public void setRole_memo(String role_memo) {
this.role_memo = role_memo;
}
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
}
学生实体类映射文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 配置类和表对应
class标签
name属性:实体类全路径
table属性:数据库表名称 -->
<class name="com.hrs.entity.Student" table="t_user">
<id name="StudentId" column="StudentId" type="java.lang.Integer">
<generator class="native"></generator>
</id>
<property name="StudentName" column="StudentName" type="java.lang.String"></property>
<property name="StudentAge" column="StudentAge" type="java.lang.Integer"></property>
<!-- 在客户映射文件中,表示所有联系人
使用set标签使用所有联系人,set标签里面有name属性,
属性值写在客户实体类里面表示联系人的set集合名称 -->
<set name="RoleSet" >
<!-- 一对多建表有外键,hibernate机制:双向维护外键,在一和多的那一方都配置外键
column属性值:外键名称 -->
<key column="studentid"></key>
<!-- 客户所有的联系人,class里面写联系人实体类全路径 -->
<one-to-many class="com.hrs.entity.Role"></one-to-many>
</set>
</class>
</hibernate-mapping>
角色实体类映射文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 配置类和表对应
class标签
name属性:实体类全路径
table属性:数据库表名称 -->
<class name="com.hrs.entity.Role" table="t_role">
<id name="role_id" column="role_id" type="java.lang.Integer">
<generator class="native"></generator>
</id>
<property name="role_name" column="role_name" type="java.lang.String"></property>
<property name="role_memo" column="role_memo" type="java.lang.String"></property>
<!-- 联系人所属的客户
name属性:因为在联系人实体类使用customer对象表示,写customer名称
class属性:customer全路径名
column属性:外键名称
-->
<many-to-one name="student" class="com.hrs.entity.Student" column="uid"> </many-to-one>
</class>
</hibernate-mapping>
学生与课程是多对多关联。
学生实体类:
package com.hrs.entity;
import java.util.HashSet;
import java.util.Set;
public class Student {
private Integer StudentId;
private String StudentName;
private Integer StudentAge;
//在学生实体类表示课程用set集合
private Set <Course> CourseSet=new HashSet<Course>();
public Set<Course> getCourseSet() {
return CourseSet;
}
public void setCourseSet(Set<Course> courseSet) {
CourseSet = courseSet;
}
public Integer getStudentId() {
return StudentId;
}
public void setStudentId(Integer studentId) {
StudentId = studentId;
}
public String getStudentName() {
return StudentName;
}
public void setStudentName(String studentName) {
StudentName = studentName;
}
public Integer getStudentAge() {
return StudentAge;
}
public void setStudentAge(Integer studentAge) {
StudentAge = studentAge;
}
}
课程实体类:
package com.hrs.entity;
import java.util.HashSet;
import java.util.Set;
public class Course {
private Integer CourseId;
private String CourseName;
private Integer Coursetime;
//在课程实体类表示学生用set集合
private Set <Student> StudentSet=new HashSet<Student>();
public Set<Student> getStudentSet() {
return StudentSet;
}
public void setStudentSet(Set<Student> studentSet) {
StudentSet = studentSet;
}
public Integer getCourseId() {
return CourseId;
}
public void setCourseId(Integer courseId) {
CourseId = courseId;
}
public String getCourseName() {
return CourseName;
}
public void setCourseName(String courseName) {
CourseName = courseName;
}
public Integer getCoursetime() {
return Coursetime;
}
public void setCoursetime(Integer coursetime) {
Coursetime = coursetime;
}
}
学生映射文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 配置类和表对应
class标签
name属性:实体类全路径
table属性:数据库表名称 -->
<class name="com.hrs.entity.Student" table="testStudent">
<id name="StudentId" column="StudentId" type="java.lang.Integer">
<generator class="native"></generator>
</id>
<property name="StudentName" column="StudentName" type="java.lang.String"></property>
<property name="StudentAge" column="StudentAge" type="java.lang.Integer"></property>
<!-- 在用户映射文件中,表示所有角色
使用set标签使用所有联系人,set标签里面有name属性,
属性值写在用户实体类里面表示角色的set集合名称
table属性:写第三张表名称-->
<set name="CourseSet" table="student_course" >
<!-- 一对多建表有外键,hibernate机制:双向维护外键,在一和多的那一方都配置外键
column属性值:当前映射文件在第三张表的外键名称 -->
<key column="studentid"></key>
<!-- class里面写角色实体类全路径 column里面写角色在第三张表外键名称 -->
<many-to-many class="com.hrs.entity.Course" column="courseid"></many-to-many>
</set>
</class>
</hibernate-mapping>
课程映射文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 配置类和表对应
class标签
name属性:实体类全路径
table属性:数据库表名称 -->
<class name="com.hrs.entity.Cuorse" table="testCousr">
<id name="CourseId" column="CourseId" type="java.lang.Integer">
<generator class="native"></generator>
</id>
<property name="CourseName" column="CourseName" type="java.lang.String"></property>
<property name="Coursetime" column="Coursetime" type="java.lang.Integer"></property>
<!-- 在用户映射文件中,表示所有角色
使用set标签使用所有联系人,set标签里面有name属性,
属性值写在用户实体类里面表示角色的set集合名称
table属性:写第三张表名称-->
<set name="StudentSet" table="student_course" >
<!-- 一对多建表有外键,hibernate机制:双向维护外键,在一和多的那一方都配置外键
column属性值:当前映射文件在第三张表的外键名称 -->
<key column="courseid"></key>
<!-- class里面写角色实体类全路径 column里面写角色在第三张表外键名称 -->
<many-to-many class="com.hrs.entity.Student" column="studentid"></many-to-many>
</set>
</class>
</hibernate-mapping>