mybatis-联表查询+查询输入的参数是集合(利用参数是集合进行查询,实现级联查询)
2019-01-14 19:42
441 查看
一、数据库表的介绍
1、班级表:
CREATE TABLE
classes(
c_idint(3) NOT NULL,
c_namevarchar(20) DEFAULT NULL,
teacher_idint(3) DEFAULT NULL,
PRIMARY KEY (
c_id),
KEY
teacher_id(
teacher_id),
CONSTRAINT
classes_ibfk_1FOREIGN KEY (
teacher_id) REFERENCES
teacher(
t_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2、学生表:
CREATE TABLE
student(
s_idint(3) NOT NULL,
s_namevarchar(20) DEFAULT NULL,
classes_idint(3) DEFAULT NULL,
PRIMARY KEY (
s_id),
KEY
classes_id(
classes_id),
CONSTRAINT
student_ibfk_1FOREIGN KEY (
classes_id) REFERENCES
classes(
c_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、老师表:
CREATE TABLE
teacher(
t_idint(3) NOT NULL,
t_namevarchar(20) DEFAULT NULL,
PRIMARY KEY (
t_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4、数据库概念模型:
二、数据库连表查询:
1、查询要求:通过班级编号,查询学生信息及对应的老师和班级的信息
2、mapper映射文件的编写:
<!--resultMap属性与后面取得resultMapper的id名相同,注意这里是三张表的连表查询--> <select id="selStuClasTeacher" parameterType="int" resultMap="stuClasTeacher"> SELECT s.*,t.t_name,c.c_name from student s,teacher t,classes c where s.classes_id=c.c_id=t.t_id HAVING s.classes_id=#{c_id} </select> <resultMap type="Classes" id="stuClasTeacher"> <id column="c_id" property="c_id"/> <result column="c_name" property="c_name"/> <!-- association 是实体类里面的类属性--> <association property="teacher" javaType="Teacher" column="t_id"> <id column="t_id" property="t_id"/> <result column="t_name" property="t_name"/> </association> <association property="student" javaType="Student" column="s_id"> <id column="s_id" property="s_id"/> <result column="s_name" property="s_name"/> </association> </resultMap>
三、参数是集合的查询(类似于级联查询)
1、查询条件:根据学生的多个id查询学生信息,传入的参数是集合,就是做SQL查询时,需要循环进行查询时,利用参数是集合的方式,在SQL语句中就实现重复查询的作用
2、查询mapper映射文件的编写
<!--注意这里的SQL语句用的是in关键字,这里的的级联可以输入数组--> <select id="selStuById" resultMap="Students"> SELECT * from student WHERE s_id in <foreach collection="list" open="(" separator="," close=")" item="a"> #{a} </foreach> </select>
四、实体接口:
五、实体类:
1、班级实体类
public class Classes { private int c_id; private String c_name; private Teacher teacher; private Student student; public int getC_id() { return c_id; } public void setC_id(int 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; } public Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; } public Classes() { super(); } @Override public String toString() { return "Classes [c_id=" + c_id + ", c_name=" + c_name + ", teacher=" + teacher + ", student=" + student + "]"; }
}
2、老师实体类
public class Teacher { private int t_id; private String t_name; private Classes classes; public int getT_id() { return t_id; } public void setT_id(int t_id) { this.t_id = t_id; } public String getT_name() { return t_name; } public void setT_name(String t_name) { this.t_name = t_name; } public Classes getClasses() { return classes; } public void setClasses(Classes classes) { this.classes = classes; } @Override public String toString() { return "Teacher [t_id=" + t_id + ", t_name=" + t_name + ", classes=" + classes + "]"; } public Teacher(int t_id, String t_name, Classes classes) { super(); this.t_id = t_id; this.t_name = t_name; this.classes = classes; } public Teacher() { super(); }
}
3、学生实体类:
public class Student { private int s_id; private String s_name; private Classes classes; public int getS_id() { return s_id; } public void setS_id(int 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; } public Classes getClasses() { return classes; } public void setClasses(Classes classes) { this.classes = classes; } public Student(int s_id, String s_name, Classes classes) { super(); this.s_id = s_id; this.s_name = s_name; this.classes = classes; } public Student() { super(); } @Override public String toString() { return "Student [s_id=" + s_id + ", s_name=" + s_name + ", classes=" + classes + "]"; }
}
相关文章推荐
- MyBatis学习总结——实现级联表查询(一对一,一对多)
- 利用回调技术实现的一个JDBC 查询操作(可依此进行扩展)
- 利用简单的参数传递来实现单条查询的easyui-datagrid
- mybatis ---- 级联查询 一对多 (集合映射)
- (四)Python查询12306余票:docopt实现参数的输入-----查询任意时间任意车站余票
- Mybatis中使用Collection元素进行一对多级联查询
- mybatis ---- 级联查询 一对多 (集合映射)
- 利用SSM(springmvc+spring+mybatis)实现多表联合查询
- Mybatis多参数查询与列表查询不同方式实现
- Solrj对SolrServer进行Term查询:(利用prefix 也可以实现auto-complete)
- Springboot中使用Mybatis框架对数据库进行联表查询,踩坑填坑
- Mybatis传递多个参数进行SQL查询的用法
- MyBatis的级联查询(association 进行分布查询)
- shell练习:函数实现接受参数,查询用户输入的用户情况(带颜色显示)
- MyBatis中forEach实现in条件下的集合参数SQL语句
- Mybatis3.4.x技术内幕(二十一):参数设置、结果封装、级联查询、延迟加载原理分析
- SSM搭建-Mybatis基于注解实现增删查改和多参数列表查询(20)
- 润乾集算报表实现参数级联查询
- Mybatis使用MySQL进行模糊查询时输入中文检索不到结果
- 23、SSM框架-Mybatis基于注解实现增删查改和多参数列表查询(5)