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 ...
随机推荐
- py02_03:py的数据类型
数据类型初识 1. 整数(int) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值 ...
- Python—选择排序算法
# 选择排序,时间复杂度O(n²) def select_sort(arr): """ 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置. 再从剩余未排序元 ...
- dubbo的重试原则
验证思路.使用超时来验证重试次数 XML 注解
- 八皇后问题 2n皇后问题
Description 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题. 对于某 ...
- shell day01总结
,Iptables –Z 清空再计数 内存是如何工作的?是干什么的? 随机存取存储器又称作“随机存储器”,是与CPU直接交换的内部存储器,也叫主存.它可以随时读写,而且速度很快,通常作为操作系统或其他 ...
- Regex of Perl: ?= 指的是如果后面匹配到,则后面的内容不做替换,保留。 ab, s/a?=b/x/,变为xb,即后面匹配到b,b保留不做替换
Regex of Perl: ?= 指的是如果后面匹配到,则后面的内容不做替换,保留. ab, s/a?=b/x/,变为xb,即后面匹配到b,b保留不做替换
- Nginx_安全2
Nginx与安全有关的配置 隐藏版本号 http { server_tokens off;} 经常会有针对某个版本的nginx安全漏洞出现,隐藏nginx版本号就成了主要的安全优化手段之一,当然 ...
- Linux基础篇六:Linux文件属性和类型
-:代表文件 s: sorket文件 b:block块设备 (磁盘,光驱等) c:字符设备 l:连接文件 p:管道文件 d:代表目录文件 为了更加区分- (文件的具体类型),系统提供了file命令更加 ...
- PAT甲级——1006 Sign In and Sign Out
PATA1006 Sign In and Sign Out At the beginning of every day, the first person who signs in the compu ...
- 【SpringCloud】Eureka入门与原理
为了开发效率高效和业务逻辑清晰,越来越多的项目采用分布式系统.分布式最重要的就是注册中心了.Eureka是SpringCloud原生提供的注册中心,来look一波吧. 超光速入门 服务端 引入依赖: ...