1、首先创建2张表:students 和grades

create table grades(
gid int() primary key,
gname varchar()
); create table students(
sid int() primary key,
sname varchar(),
sgid int(),
constraint sgid_fk foreign key(sgid) references grades(gid)
); insert into grades(gid,gname) values(,'java'); insert into student(sid,sname,sgid) values(,'哈哈',);
insert into student(sid,sname,sgid) values(,'呵呵',); select * from grades;
select * from student;

2、创建POJO:Student.java 和Grade.java

@Data
public class Student {
private Integer id;
private String name;
private Grade grade;
}
@Data
public class Grade {
private Integer id;
private String name; }

3、创建StudentMapper接口查询Java学科有哪些学生信息

import com.longteng.diamond.domain.one2many.Student;
import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper
public interface StudentMapper {
/*
查询java学科有哪些学生信息
*/
public List<Student> findBySubject(String subject); }

4、创建StudentGradeMapper.xml文件

<?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.longteng.diamond.dao.one2many.StudentMapper">
<resultMap id="myStudent" type="com.longteng.diamond.domain.one2many.Student">
<id property="id" column="sid" jdbcType="INTEGER"></id>
<result property="name" column="sname" jdbcType="VARCHAR"></result>
<collection property="grade" ofType="com.longteng.diamond.domain.one2many.Grade">
<id property="id" column="gid"></id>
<result property="name" column="gname"></result>
</collection>
</resultMap>
   /*
查询java学科有哪些学生信息
*/ <select id="findBySubject" parameterType="java.lang.String" resultMap="myStudent"> select s.sid,s.sname ,g.gid,g.gname from student s inner join grades g on s.sgid = g.gid where g.gname=#{}
</select>
</mapper>

5、创建Controller

import com.longteng.diamond.dao.one2many.StudentMapper;
import com.longteng.diamond.domain.one2many.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController
public class StudentCardController { @Autowired
StudentMapper studentMapper; /*
查询java学科有哪些学生信息
*/
@RequestMapping("/findBySubject")
public String test1(){
List<Student> studentList = studentMapper.findBySubject("java");
StringBuffer stringBuffer = new StringBuffer();
if(!CollectionUtils.isEmpty(studentList)){
for(Student student:studentList){
stringBuffer.append(student.toString());
}
}
return stringBuffer.toString();
}
}

6、运行接口http://localhost/findBySubject获取测试结果

Student(id=, name=哈哈, grade=Grade(id=, name=java))Student(id=, name=呵呵, grade=Grade(id=, name=java))

MyBatis学习总结之一对多映射的更多相关文章

  1. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...

  2. MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: m ...

  3. MyBatis学习总结(七)——Mybatis缓存(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的 ...

  4. (原创)mybatis学习二,spring和mybatis的融合

    mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...

  5. (原创)mybatis学习一,夯实基础

    一,what?(是什么) MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可 ...

  6. MyBatis学习--简单的增删改查

    jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...

  7. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  8. 【Todo】Mybatis学习-偏理论

    之前写过好几篇Mybatis相关的文章: http://www.cnblogs.com/charlesblc/p/5906431.html  <SSM(SpringMVC+Spring+Myba ...

  9. MyBatis学习系列三——结合Spring

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...

随机推荐

  1. (最全最灵活地)利用Jxl工具包实现Excel表的内容读取 、写入(可向已有表中追加数据)

    1.引子 (1)读取 Jxl工具比较强大,可以方便地实现Excel表的读取和写入.另一款工具Poi也具有相似的功能,并且功能更多,运用也相对复杂.Poi读取Excel表内容时,需要先判断其内容格式,如 ...

  2. Python—使用列表构造栈数据结构

    class Stack(object): """ 使用列表实现栈 """ def __init__(self): self.stack = ...

  3. ansible puppet saltstack三款自动化运维工具的对比

    一.基础介绍 ansible基础介绍可参考:http://www.linuxidc.com/Linux/2017-12/149671.htm puppet基础介绍可参考:http://www.linu ...

  4. 输入一段汉字可以获得首字母简拼的java代码

    package com.zl; import java.io.UnsupportedEncodingException; public class Test12 { public static voi ...

  5. win10下挂载efi分区

    管理员身份打开cmd 1.输入diskpart, 2.输入list disk,列出所有的disk 3.select disk xxx,xxx代表你要选的disk 数字,比如:select disk 0 ...

  6. BTree

    hash.平衡二叉树.BTree.B+tree的区别 https://blog.csdn.net/qq_40673786/article/details/90082444 联合索引在B+树上的结构介绍 ...

  7. 传统方式接口测试返回值json验证

    1.返回值 2.验证方式: public void check200_N(Object obj, int ret_num) throws UnsupportedEncodingException, E ...

  8. 55)PHP,在html嵌套PHP写法

    样例代码:

  9. Office 365管理员设置

    一.注册 1.输入网站 http://www.21vbluecloud.com/  ,进入世纪互联蓝云官方网站 2.选择 运营的产品->Office 365 3.选择了解更多 4.浏览根据不同的 ...

  10. hibernate中lazy的使用

    lazy,延迟加载 Lazy的有效期:只有在session打开的时候才有效:session关闭后lazy就没效了. lazy策略可以用在: * <class>标签上:可以取值true/fa ...