博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis一对多查询,多对一查询
阅读量:3890 次
发布时间:2019-05-23

本文共 6724 字,大约阅读时间需要 22 分钟。

多对一

比如说,我们很多个学生对应一个老师,这就是多对一。

要想实现多对一,首先得有两张表,如何在其中一张表中添加另外一章表的外键。
mysql提供的语句:

CREATE TABLE `teacher` (  `id` INT(10) NOT NULL,  `name` VARCHAR(30) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8INSERT INTO teacher(`id`, `name`) VALUES (1, '秦老师'); CREATE TABLE `student` (  `id` INT(10) NOT NULL,  `name` VARCHAR(30) DEFAULT NULL,  `tid` INT(10) DEFAULT NULL,  PRIMARY KEY (`id`),  KEY `fktid` (`tid`),  CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8INSERT INTO `student` (`id`, `name`, `tid`) VALUES (1, '武少伟', 1); INSERT INTO `student` (`id`, `name`, `tid`) VALUES (2, '李鸿彬', 1); INSERT INTO `student` (`id`, `name`, `tid`) VALUES (3, '武少伟', 1); INSERT INTO `student` (`id`, `name`, `tid`) VALUES (4, '姚震', 1); INSERT INTO `student` (`id`, `name`, `tid`) VALUES (5, '夏彬峰', 1);
  1. 首先建立实体类
package com.baidu.pojo;public class Student {
private int id; private String name; private Teacher teacher; public Student(int id, String name, Teacher teacher) {
this.id = id; this.name = name; this.teacher = teacher; } public Student() {
} public int getId() {
return id; } public void setId(int id) {
this.id = id; } public String getName() {
return name; } public void setName(String name) {
this.name = name; } public Teacher getTeacher() {
return teacher; } public void setTeacher(Teacher teacher) {
this.teacher = teacher; } @Override public String toString() {
return "Student{" + "id=" + id + ", name='" + name + '\'' + ", teacher=" + teacher + '}'; }}
package com.baidu.pojo;public class Teacher {
private int id; private String name; public Teacher() {
} public Teacher(int id, String name) {
this.id = id; this.name = name; } public int getId() {
return id; } public void setId(int id) {
this.id = id; } public String getName() {
return name; } public void setName(String name) {
this.name = name; } @Override public String toString() {
return "Teacher{" + "id=" + id + ", name='" + name + '\'' + '}'; }}
  1. 添加dao层代码
package com.baidu.dao;import com.baidu.pojo.Student;import java.util.List;public interface StudentDao {
//获得全部学生的信息,以及对应的老师 List
getStudents(); List
getStudents2();}
  1. 添加映射文件
  1. 添加测试文件
package com.baidu.dao;import com.baidu.pojo.Student;import com.baidu.utils.MyBatisUtils;import org.apache.ibatis.session.SqlSession;import org.junit.Test;import java.util.List;public class StudentDaoTest {
@Test public void getStudents(){
SqlSession sqlSession = MyBatisUtils.getSqlSession(); StudentDao mapper = sqlSession.getMapper(StudentDao.class); List
students = mapper.getStudents(); for (Student student : students) {
System.out.println(student); } } @Test public void getStudents2(){
SqlSession sqlSession = MyBatisUtils.getSqlSession(); StudentDao mapper = sqlSession.getMapper(StudentDao.class); List
students = mapper.getStudents2(); for (Student student : students) {
System.out.println(student); } }}

一对多

  1. 配置pojo层代码
package com.baidu.pojo;import java.util.List;public class Teacher {
private int id; private String name; private List
students; public Teacher(int id, String name, List
students) {
this.id = id; this.name = name; this.students = students; } public Teacher() {
} public int getId() {
return id; } public void setId(int id) {
this.id = id; } public String getName() {
return name; } public void setName(String name) {
this.name = name; } public List
getStudents() {
return students; } public void setStudents(List
students) {
this.students = students; } @Override public String toString() {
return "Teacher{" + "id=" + id + ", name='" + name + '\'' + ", students=" + students + '}'; }}
  1. 配置dao层代码
Teacher getTeacher(int id);
  1. 配置映射文件
  1. 测试
package com.baidu;import com.baidu.dao.TeacherDao;import com.baidu.pojo.Teacher;import com.baidu.utils.MyBatisUtils;import org.apache.ibatis.session.SqlSession;import org.junit.Test;public class TeacherDaoTest {
@Test public void getTeacher(){
SqlSession sqlSession = MyBatisUtils.getSqlSession(); TeacherDao mapper = sqlSession.getMapper(TeacherDao.class); Teacher teacher = mapper.getTeacher(1); System.out.println(teacher); }}

在这里插入图片描述

第二种方法

  1. 配置dao层文件
Teacher getTeacherTwo(int id);
  1. 配置映射文件
    
  1. 测试文件
@Test    public  void getTeacher2(){
SqlSession sqlSession = MyBatisUtils.getSqlSession(); TeacherDao mapper = sqlSession.getMapper(TeacherDao.class); Teacher teacher = mapper.getTeacherTwo(1); System.out.println(teacher); }

在这里插入图片描述

动态SQL查询

delete from smbms.smbms_role
id = #{id}
update smbms.smbms_role
roleCode = #{roleCode},
roleName = #{roleName},
createdBy = #{createdBy},
creationDate = #{creationDate},
modifyBy = #{modifyBy},
modifyDate = #{modifyDate},

转载地址:http://shohn.baihongyu.com/

你可能感兴趣的文章
重学C++之路_#1_异常处理
查看>>
C/C++指针回顾
查看>>
算法之排序--希尔排序
查看>>
javascript深入浅出图解作用域链和闭包
查看>>
WebKit之Http请求
查看>>
WebKit之FrameWork层介绍
查看>>
WebKit之Http响应
查看>>
Webkit之支持WML
查看>>
Webkit之HTMLInput分析
查看>>
WebKit之UserAgent分析
查看>>
Webkit之HTMLToken处理
查看>>
Webkit之HTMLTokenizer分析
查看>>
Webkit之平台相关层
查看>>
Webkit之UI层布局
查看>>
WebKit之InlineBox绘制阶段顺序
查看>>
WebKit之图像显示分析流程
查看>>
WebKit之addToJavaScriptWindowObject()分析
查看>>
资源之收集列表整理
查看>>
JS之kindeditor的用法简介
查看>>
Linux之最简字符驱动的编码模型
查看>>