1、一對一java
一、sql語句 建表 插入數據sql
CREATE TABLE teacher( t_id VARCHAR(255) PRIMARY KEY, t_name VARCHAR(255) ); CREATE TABLE class( c_id VARCHAR(255) PRIMARY KEY, c_name VARCHAR(255), teacher_id VARCHAR(255) ); ALTER TABLE class ADD CONSTRAINT fk_teacher_id FOREIGN KEY (teacher_id) REFERENCES teacher(t_id) INSERT INTO teacher(t_id,t_name) VALUES('t11111','teacher1'); INSERT INTO teacher(t_id,t_name) VALUES('t22222','teacher2'); INSERT INTO class(c_id,c_name, teacher_id) VALUES('c1111','class_a', 't11111'); INSERT INTO class(c_id,c_name, teacher_id) VALUES('c2222','class_b', 't22222');
對應關係mybatis
二、class teacher實體類app
package com.test.model; public class Classes { private String c_id; private String c_name; private Teacher teacher; public String getC_id() { return c_id; } public void setC_id(String c_id) { this.c_id = c_id; } public String getC_name() { return c_name; } public void setC_name(String c_name) { this.c_name = c_name; } public Teacher getTeacher() { return teacher; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } }
package com.test.model; public class Teacher { private String teacher_id; private String teacher_name; public String getTeacher_id() { return teacher_id; } public void setTeacher_id(String teacher_id) { this.teacher_id = teacher_id; } public String getTeacher_name() { return teacher_name; } public void setTeacher_name(String teacher_name) { this.teacher_name = teacher_name; } }
dao層接口 servicec層 controller層省略測試
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.test.dao.IClassesDao"><!-- 對應dao層接口的名字 --> <resultMap id="classesMap" type="com.test.model.Classes"> <id property="c_id" column="c_id" javaType="java.lang.String"></id> <result property="c_name" column="c_name" javaType="java.lang.String"></result> <!--自定義結果集--> <association property="teacher" javaType="com.test.model.Teacher"> <id property="teacher_id" column="t_id"/> <result property="teacher_name" column="t_name"/> </association> </resultMap> <select id="selClass" resultMap="classesMap" parameterType="java.lang.String"> SELECT * from class c,teacher t WHERE c.teacher_id=t.t_id AND c.c_name=#{c_name} </select> </mapper>
測試結果:this
2、一對多spa
sqlcode
CREATE TABLE student( s_id VARCHAR(20) PRIMARY KEY, s_name VARCHAR(20), class_id VARCHAR(20) ); INSERT INTO student(s_id,s_name, class_id) VALUES('s1','student_A','c1111'); INSERT INTO student(s_id,s_name, class_id) VALUES('s2','student_B','c1111'); INSERT INTO student(s_id,s_name, class_id) VALUES('s3','student_C','c1111'); INSERT INTO student(s_id,s_name, class_id) VALUES('s4','student_D','c1111'); INSERT INTO student(s_id,s_name, class_id) VALUES('s5','student_E','c1111'); INSERT INTO student(s_id,s_name, class_id) VALUES('s6','student_F','c1111');
實體類studentxml
package com.test.model; public class Student { private String s_id; private String s_name; public String getS_id() { return s_id; } public void setS_id(String s_id) { this.s_id = s_id; } public String getS_name() { return s_name; } public void setS_name(String s_name) { this.s_name = s_name; } }
class類中添加一個list<Student>對象
mapper
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.test.dao.IClassesDao"><!-- 對應dao層接口的名字 --> <!--自定義結果集--> <resultMap id="classesMap" type="com.test.model.Classes"> <id property="c_id" column="c_id" javaType="java.lang.String"></id> <result property="c_name" column="c_name" javaType="java.lang.String"></result> <!--teacher表--> <association property="teacher" javaType="com.test.model.Teacher"> <id property="teacher_id" column="t_id"/> <result property="teacher_name" column="t_name"/> </association> </resultMap> <select id="selClass" resultMap="classesMap" parameterType="java.lang.String"> SELECT * from class c,teacher t WHERE c.teacher_id=t.t_id AND c.c_name=#{c_name} </select> <resultMap id="ClaStudent" type="com.test.model.Classes"> <id property="c_id" column="c_id" javaType="java.lang.String"></id> <result property="c_name" column="c_name" javaType="java.lang.String"></result> <!--teacher表--> <association property="teacher" javaType="com.test.model.Teacher"> <id property="teacher_id" column="t_id"/> <result property="teacher_name" column="t_name"/> </association> <!-- ofType指定students集合中的對象類型 --> <collection property="students" ofType="com.test.model.Student"> <id property="s_id" column="s_id"/> <result property="s_name" column="s_name"/> </collection> </resultMap> <select id="getCLaStudent" resultMap="ClaStudent" parameterType="java.lang.String"> select * from class c, teacher t,student s where c.teacher_id=t.t_id and c.c_id=s.class_id and c.c_name=#{c_name} </select> </mapper>
其餘省略
查詢成功
MyBatis中使用collection標籤來解決一對多的關聯查詢,ofType屬性指定集合中元素的對象類型。