如何配置mybatis對應的xml如何配置一對多關係(實現表之間的一對多關係的xml)的xml檔案?
阿新 • • 發佈:2019-01-27
先配置一個mybatis.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- 記得一定要加這個,否則報錯都不會提示 --> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 這個非常有用,這是在你處理SQL語句時會通過log4j將對應的SQL語句列印顯示出來 --> <settings> <setting name="logImpl" value="STDOUT_LOGGING" /> </settings> <mappers> <!-->這裡可以配置多個操作的xml--> <mapper resource="user.xml" /> </mappers> </configuration>
假設資料庫中有兩個表,老師表與班級表
老師表如下:
CREATE TABLE `t_teacher` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '自增id',
`name` VARCHAR(50) NOT NULL COMMENT '名稱',
PRIMARY KEY (`id`)
)
COMMENT='老師資訊表'
COLLATE='gbk_chinese_ci';
班級表如下:
CREATE TABLE `t_class` ( `id` bigint NOT NULL COMMENT '與老師表有主外來鍵關係', `class_name` VARCHAR(50) NOT NULL COMMENT '班級名稱' ) COMMENT='班級表' COLLATE='gbk_chinese_ci';
主外來鍵關係建立
ADD CONSTRAINT 'class_teacher_key' FOREIGN KEY (`id`) REFERENCES`t_teacher` (`id`);
對應實體類
import java.util.List; public class Teacher { private Long id; private String teacherName; // 一個老師對應多個班級 private List<ClassRoom> classRoom; public Teacher() { } public Teacher(Long id, String teacherName, List<ClassRoom> classRoom) { super(); this.id = id; this.teacherName = teacherName; this.classRoom = classRoom; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getTeacherName() { return teacherName; } public void setTeacherName(String teacherName) { this.teacherName = teacherName; } public List<ClassRoom> getClassRoom() { return classRoom; } public void setClassRoom(List<ClassRoom> classRoom) { this.classRoom = classRoom; } @Override public String toString() { return "Teacher [id=" + id + ", teacherName=" + teacherName + "]"; } }
public class ClassRoom {
private Long id;
private String className;
public ClassRoom() {
}
public ClassRoom(Long id, String className) {
super();
this.id = id;
this.className = className;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
@Override
public String toString() {
return "ClassRoom [id=" + id + ", className=" + className + "]";
}
}
現在配置user.xml的SQL語句操作以及配置一對多關係
<!-- column 放資料庫列名,property放實體類屬性名 -->
<mapper namespace="dao介面">
<resultMap type="實體類包名" id="teacherMap">
<id column="id" property="id" />
<result column="name' property="teacherName"/>
<collection property="classRoom" ofType="實體類路徑">
<id column="id" property="id" />
<result column="class_name' property="className" />
</collection>
</resultMap>
<!-- SQL語句操作 -->
<select id="selectTeacherToClass" resultMap="teacherMap">
select * from t_teacher t,t_class c where t.name = #{teacherName} and t.id = c.id;
</select>
</mapper>
如上面的配置,就可以通過teacherName 查詢得到他對應的班級
謝謝!!! 寫的不好,望請見諒!