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 ...
随机推荐
- LeetCode No.163,164,165
No.163 FindMissingRanges 缺失的区间 题目 给定一个排序的整数数组 nums ,其中元素的范围在闭区间 [lower, upper] 当中,返回不包含在数组中的缺失区间. 示例 ...
- python os.path.dirname() abspath()
测试文件的名称 path_test.py 先确定文件目录 (my_flask3) python@ubuntu:~/Desktop/flask_news_pro$ python path_test.py ...
- pandas在指定列插入数据
import pandas as pd import numpy as np df = pd.DataFrame(np.arange(15).reshape(5, 3), columns=['a', ...
- dfs+剪枝 poj1011
Sticks Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 113547 Accepted: 26078 问题描述 Ge ...
- Python—选择排序算法
# 选择排序,时间复杂度O(n²) def select_sort(arr): """ 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置. 再从剩余未排序元 ...
- MySQL--mysqldump(数据导出工具)
mysqldump 客户端工具用来备份数据库或在不同数据库之间进行数据迁移.备份内容包含创建表或装载表的 SQL 语句.mysqldump 目前是 MySQL 中最常用的备份工具. 有 3 种方式来调 ...
- 谷歌发布自家物理密匙TitanKey,能让人们远离互联网“黑洞”吗?
随着隐私泄露事件的飞速增多,人们对如何保护自身隐私安全也越来越重视.而基于这种诉求,众多企业也在持续发力安全层面.毕竟,在目前危机四伏的互联网大环境下,真正能保护人们隐私安全的服务.设备等都是&quo ...
- JKFZ%你赛炸裂祭
Md爆40了身败名裂 上来就刚T1是什么习惯?居然不看T2导致明明能刚出正解却止步40 , T3找到原题看懂题解后却不敢交+难码 , 最近怕不是做毒瘤%你赛多了总以为T1能刚到点分 md最近怕不是炸了 ...
- [HEOI2013]ALO(可持久化Trie+链表)
你永远不会相信一个快AFO的选手不会可持久化Trie. 其实异或粽子那题可以用可持久化Trie做,不过我还是没用,用的一般的Trie(其实可持久化是多此一举),于是到现在还是不会可持久化Trie. 这 ...
- IntelliJ IDEA2018.2.7安装和破解教程
一.安装 IntelliJ IDEA2018.2.7 IDEA官网下载地址链接:https://www.jetbrains.com/idea/download/previous.html 1.进入网站 ...