mybatis一对多映射【班级与学生】
1)如图
2)创建grades.sql和students.sql
- drop table students;
- drop table grades;
- create table grades(
- gid int(5) primary key,
- gname varchar(10)
- );
- create table students(
- sid int(5) primary key,
- sname varchar(10),
- sgid int(5),
- constraint sgid_fk foreign key(sgid) references grades(gid)
- );
- insert into grades(gid,gname) values(1,'java');
- insert into students(sid,sname,sgid) values(1,'哈哈',1);
- insert into students(sid,sname,sgid) values(2,'呵呵',1);
3)创建Grade.java和Student.java
- **
- * 班级(单方)
- */
- public class Grade {
- private Integer id;
- private String name;
- private List<Student> studentList = new ArrayList<Student>();
- public Grade(){}
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public List<Student> getStudentList() {
- return studentList;
- }
- public void setStudentList(List<Student> studentList) {
- this.studentList = studentList;
- }
- }
- /**
- * 学生(多方)
- */
- public class Student {
- private Integer id;
- private String name;
- private Grade grade;
- public Student(){}
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Grade getGrade() {
- return grade;
- }
- public void setGrade(Grade grade) {
- this.grade = grade;
- }
- }
4)创建GradeMapper.xml和StudentMapper.xml
GradeMapper.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="gradeNamespace">
- <resultMap type="loaderman.one2many.Grade" id="gradeMap">
- <id property="id" column="gid" />
- <result property="name" column="gname"/>
- <collection property="studentList" resultMap="studentNamespace.studentMap"/>
- </resultMap>
- <select id="findGradeByName" parameterType="string" resultMap="gradeMap">
- select g.gid,g.gname,s.sid,s.sname
- from grades g,students s
- where g.gid = s.sgid
- and s.sname = #{name}
- </select>
- </mapper>
StudentMapper.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="studentNamespace">
- <resultMap type="loaderman.one2many.Student" id="studentMap">
- <id property="id" column="sid" />
- <result property="name" column="sname"/>
- <association property="grade" resultMap="gradeNamespace.gradeMap"/>
- </resultMap>
- <select id="findAllByName" parameterType="string" resultMap="studentMap">
- select s.sid,s.sname,g.gid,g.gname
- from grades g,students s
- where g.gid = s.sgid
- and g.gname = #{name}
- </select>
- </mapper>
5)创建GradeStudentDao.java
- public class GradeStudentDao {
- /**
- * 查询java班级有哪些【学生】
- */
- public List<Student> findAllByName(String name) throws Exception{
- SqlSession sqlSession = null;
- try{
- sqlSession = MybatisUtil.getSqlSession();
- return sqlSession.selectList("studentNamespace.findAllByName",name);
- }catch(Exception e){
- e.printStackTrace();
- throw e;
- }finally{
- MybatisUtil.closeSqlSession();
- }
- }
- /**
- * 查询哈哈属于哪个【班级】
- */
- public Grade findGradeByName(String name) throws Exception{
- SqlSession sqlSession = null;
- try{
- sqlSession = MybatisUtil.getSqlSession();
- return sqlSession.selectOne("gradeNamespace.findGradeByName",name);
- }catch(Exception e){
- e.printStackTrace();
- throw e;
- }finally{
- MybatisUtil.closeSqlSession();
- }
- }
- public static void main(String[] args) throws Exception{
- GradeStudentDao dao = new GradeStudentDao();
- List<Student> studentList = dao.findAllByName("java");
- for(Student s : studentList){
- System.out.println(s.getId()+":"+s.getName()+":"+s.getGrade().getId()+":"+s.getGrade().getName());
- }
- Grade grade = dao.findGradeByName("哈哈");
- System.out.println(grade.getId()+":"+grade.getName());
- }
- }
mybatis一对多映射【班级与学生】的更多相关文章
- 基于JavaScript的表格设计:按序添加或删除班级的学生信息
目的: 制作一个表格,显示班级的学生信息 功能: 鼠标移到不同行,背景色发生改变,离开恢复原背景色 添加.删除按钮,可添加,可删除. 程序流程: 首先先建立绑定事件函数. 其次建立鼠标移动改变背景色函 ...
- PHP学习笔记(14)班级和学生管理---学生
两个文件夹,一个班级cls,一个学生stu. 两个表,一个班级cls,一个学生stu. 每个文件夹里有7个php文件:主界面stu.php-------增add.php,insert.php----- ...
- PHP学习笔记(13)班级和学生管理---班级
两个文件夹,一个班级cls,一个学生stu. 两个表,一个班级cls,一个学生stu. 每个文件夹里有7个php文件:主界面cls.php-------增add.php,insert.php----- ...
- mybatis一对多映射
场景: A:SecControlRulePojo.java B:SecControlSubRulePojo C:SecControlSubRuleManyPojo 实体A中包含List<B> ...
- MyBatis 一对多映射
From<MyBatis从入门到精通> <!-- 6.1.2.1 collection集合的嵌套结果映射 和association类似,集合的嵌套结果映射就是指通过一次SQL查询将所 ...
- MyBatis一对多映射简单查询案例(嵌套结果)
一.案例描述 书本类别表和书本信息表,查询书本类别表中的某一记录,连带查询出所有该类别书本的信息. 二.数据库表格 书本类别表(booktypeid,booktypename) 书本信息表(booki ...
- MyBatis一对多映射简单查询案例(嵌套Mapper映射文件中的sql语句)
一.案例描述 书本类别表和书本信息表,查询书本类别表中的某一记录,连带查询出所有该类别书本的信息. 二.数据库表格 书本类别表(booktypeid,booktypename) 书本信息表(booki ...
- mybatis一对多映射分页的问题
一对多可能会出现分页错误 条数不对的问题 解决方法: 将主表分页查询一次 SELECT aa.id,aa.name,bb.name FROM (SELECT * from tab1 ORDER BY ...
- Struts2自定义标签2自定义一个按班级id查询出该班级下的学生,存放进值栈,并遍历出来。
Struts2自定义标签的流程概念: (1)需要两个类:标签类(继承相应的tag类),基本类(继承Component).标签类专门负责从客户端取得用户输入的一些属性,这个普通的jsp自定义标签一样,取 ...
随机推荐
- Java虚拟机(JVM)知多少
本文大量参考:https://www.cnblogs.com/lfs2640666960/p/9297176.html 概述 JVM是JRE的一部分.它是一个虚构出来的计算机,是通过在实际的计算机上仿 ...
- 作业八——非确定的自动机NFA确定化为DFA
NFA 确定化为 DFA 子集法: f(q,a)={q1,q2,…,qn},状态集的子集 将{q1,q2,…,qn}看做一个状态A,去记录NFA读入输入符号之后可能达到的所有状态的集合. 步骤: 1. ...
- kotlin字符串模板&条件控制
字符串模版: 小时候都有要求记日记的习惯,下面是一小学生记的日记: 很漂亮的流水账,那细分析一下这些文件其实大体都类似,只有几个不同点: 其实就是地点变了,那对于这种有规律的文字可以采用kotlin的 ...
- luogu4422 [COCI2017-2018#1] Deda[线段树二分]
讨论帖:线段树二分的题..我还考场切过..白学 这题我一年前的模拟赛考场还切过,现在就不会了..好菜啊. 显然直接线段树拆成$\log n$个区间,然后每个区间在进行线段树二分即可. UPD:复杂度分 ...
- C语言之volatile
emOsprey 鱼鹰谈单片机 2月21日 预计阅读时间: 4 分钟 和 const 不同(关于 const 可以看 const 小节),当一个变量声明为 volatile,说明这个变量会被意想不到 ...
- ACM-ICPC 2017 沈阳赛区现场赛 G. Infinite Fraction Path && HDU 6223(BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6223 参考题解:https://blog.csdn.net/qq_40482495/article/d ...
- python--openCV--其它
t1=cv2.getTickCount() # 记录当前时间,以时钟周期计算 t2=cv2.getTickFrequency() #返回时钟周期,返回CPU的频率,返回CPU一秒中所走的时钟周期数
- 【Android-布局复用】 多个界面复用一个布局文件(一)
1.layout_common.xml 复用的布局文件 <?xml version="1.0" encoding="utf-8"?> <!-- ...
- SpringBoot AOP注解式拦截与方法规则拦截
AOP的本质还是动态代理对方法调用进行增强. SpringBoot 提供了方便的注解实现自定义切面Aspect. 1.使用需要了解的几个概念: 切面.@Aspect 切点.@Pointcut. 通知. ...
- SpringMVC拦截静态资源的解决方法
本文中的各软件版本简要信息: IDE:Myeclise17 JDK:1.8.0_111 spring:5.1.8 springMVC:5.1.8 mybatis:3.2.2 Tomcat:9.0 在使 ...