MyBatis学习总结之一对多映射
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学习总结之一对多映射的更多相关文章
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合(转载)
孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: m ...
- MyBatis学习总结(七)——Mybatis缓存(转载)
孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的 ...
- (原创)mybatis学习二,spring和mybatis的融合
mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...
- (原创)mybatis学习一,夯实基础
一,what?(是什么) MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可 ...
- MyBatis学习--简单的增删改查
jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- 【Todo】Mybatis学习-偏理论
之前写过好几篇Mybatis相关的文章: http://www.cnblogs.com/charlesblc/p/5906431.html <SSM(SpringMVC+Spring+Myba ...
- MyBatis学习系列三——结合Spring
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...
随机推荐
- 12 Spring Data JPA:springDataJpa的运行原理以及基本操作(上)
spring data jpaday1:orm思想和hibernate以及jpa的概述和jpa的基本操作 day2:springdatajpa的运行原理 day2:springdatajpa的基本操作 ...
- 数据分析-Numpy-Pandas
补充上一篇未完待续的Numpy知识点 索引和切片 数组和标量(数字)之间运算 li1 = [ [1,2,3], [4,5,6] ] a = np.array(li1) a * 2 运行结果: arra ...
- ios swift 判断uiviewcontroller时push present 进来的 还是pop进来的
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) //显示navbar self.navi ...
- 如何判断Office是32位还是64位?
对于持续学习VBA的老铁们,有必要了解Office的位数. 如果系统是32位的,则不需要判断Office位数了,因为只能安装32位Office. 下面只讨论64位系统中,Office的位数判断问题. ...
- 20199324《Linux内核原理与分析》第十二周作业
格式化字符串漏洞实验 一. 实验描述 格式化字符串漏洞是由像 printf(user_input) 这样的代码引起的,其中 user_input 是用户输入的数据,具有 Set-UID root 权限 ...
- [Algo] 280. Sort With 2 Stacks
Given an array that is initially stored in one stack, sort it with one additional stacks (total 2 st ...
- 13)PHP,文件加载(include和require)
有四种文件加载的语法形式(注意,不是函数): include, include_once, require, require_once; 他们的本质是一样的,都是用于加载/引入/包含/载入一个外部 ...
- BTree
hash.平衡二叉树.BTree.B+tree的区别 https://blog.csdn.net/qq_40673786/article/details/90082444 联合索引在B+树上的结构介绍 ...
- AtCoder Beginner Contest 126
因为本人rating太低,这场比赛还要记rating就来划水了,果然垫底了. 6题都很水,于是头一次在网赛中AK,不过由于网卡+手速太慢还是成功垫底. ABE 签到.不贴代码了,因为A考察字符串读入和 ...
- UUID与时间戳
/** * 32位去除'-'的UUID */ public static String getUUID() { String uuid = java.util.UUID.randomUUID().to ...