作者:知了汇智-刘阳

MyBatis既然是一个ORM框架,则它也有像Hibernate那样的一对多,多对多,多对一的实体关系映射功能。下面我们就来介绍一下如何使用MyBatis的实体关系映射1.MyBatis实体关系映射,对于我个人来讲常用的有下面两种
多对一:在子表的映射文件中添加association
一对多:在父表的映射文件中添加collection2.MyBatis中多对一的案例
先创建两张表
CREATE TABLE `student` ( `sid` int(11) default NULL, `sname` varchar(10) default NULL, `t_id` int(11) default NULL ) ; CREATE TABLE `teacher` ( `t_id` int(11) NOT NULL, `t_name` varchar(20) default NULL, PRIMARY KEY (`t_id`) ) ;
创建实体类
package com.zlt.pojo; public class Teacher { private intt_id; private String t_name; public intgetT_id() { return t_id; } public void setT_id(int t_id) { this.t_id = t_id; } public String getT_name() { return t_name; } public void setT_name(String t_name) { this.t_name = t_name; } } package com.zlt.pojo; public class Student { private int sid; private String sname; private Teacher teacher; public int getSid() { return sid; } public void setSid(intsid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public Teacher getTeacher() { return teacher; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } }
创建StudentMapper.xml文件,在此XML文件中配置多对一的关系<?xml version="1.0" encoding="UTF-8" ?> select * from student a, teacher b where a.t_id = b.t_id and sid = 123
完成多对一关系的代码测试
package com.zlt.test; import java.io.IOException; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import com.zlt.pojo.Student; public class Test03 { private static SqlSessionFactorysqlSessionFactory; private static Reader reader; static { try { reader = Resources.getResourceAsReader("config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } @Test public void m01() { SqlSessionsqlSession = sqlSessionFactory.openSession(); String sql = "com.zlt.mapper.StudentMapper.getStudent"; Student student = sqlSession.selectOne(sql); System.out.println(student.getSname() + " === " + student.getTeacher().getT_name()); sqlSession.close(); } }3.MyBatis一对多的案例
修改Student和Teacher这两个实体类
package com.zlt.pojo; public class Student { private intsid; private String sname; private Teacher teacher; public intgetSid() { return sid; } public void setSid(intsid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public Teacher getTeacher() { return teacher; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } } package com.zlt.pojo; import java.util.List; public class Teacher { private intt_id; private String t_name; private List student; public ListgetStudent() { return student; } public void setStudent(List student) { this.student = student; } public intgetT_id() { return t_id; } public void setT_id(intt_id) { this.t_id = t_id; } public String getT_name() { return t_name; } public void setT_name(String t_name) { this.t_name = t_name; } }
创建TeacherMapper的映射文件,在此文件的标签中加入<?xml version="1.0" encoding="UTF-8" ?> select * from teacher a,student b where a.t_id = b.t_id and a.t_id = 1
测试
package com.zlt.test; import java.io.IOException; import java.io.Reader; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import com.zlt.pojo.Student; import com.zlt.pojo.Teacher; public class Test03 { private static SqlSessionFactorysqlSessionFactory; private static Reader reader; static { try { reader = Resources.getResourceAsReader("config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } @Test public void m01() { SqlSessionsqlSession = sqlSessionFactory.openSession(); String sql = "com.zlt.mapper.StudentMapper.getStudent"; Student student = sqlSession.selectOne(sql); System.out.println(student.getSname() + " === " + student.getTeacher().getT_name()); sqlSession.close(); } @Test public void m02() { SqlSessionsqlSession = sqlSessionFactory.openSession(); String sql = "com.zlt.mapper.TeacherMapper.getTeacher"; Teacher teacher = sqlSession.selectOne(sql); List student = teacher.getStudent(); for (Student s : student) { System.out.println(teacher.getT_name() + "====" + s.getSname()); } sqlSession.close(); } }

mysql test 映射到实体_MyBatis实体关系映射相关推荐

  1. netsuite 数据集成_Java中带有NetSuite数据实体的对象关系映射(ORM)

    netsuite 数据集成 对象关系映射(ORM)技术使使用关系数据源更加容易,并且可以将逻辑业务模型与物理存储模型联系在一起. 遵循本教程,将NetSuite数据的连接集成到基于Java的ORM框架 ...

  2. Java中带有NetSuite数据实体的对象关系映射(ORM)

    对象关系映射(ORM)技术使使用关系数据源更容易,并且可以将逻辑业务模型与物理存储模型联系在一起. 遵循本教程,将与NetSuite数据的连接集成到基于Java的ORM框架Hibernate中. 您可 ...

  3. Hibernate旅程(五)Hibernate映射--基本类映射和对象关系映射

    回想一些我们在没有学习ssh的时候,我们建立数据库的表时,首先是数据库建模E-R图,然后再通过实体模型来建立关系模型,再建立相应的表.实体间存在三种关系,一对一,一对多(或者说多对一),多对多.而如今 ...

  4. ngnix 映射路径配置_MyBatis Config(三)映射文件mappers标签

    上篇文章我们介绍了标签,这篇文章主要讲标签 在配置文件中,元素用于指定MyBatis映射文件的位置,一般可以使用以下4种方法引入映射器文件,具体如下所示. 1.使用类路径引入2.使用本地文件路径引入3 ...

  5. Entity Framework Code First关系映射约定

    本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个 ...

  6. Entity Framework 一对多关系映射

    EF中关系映射也是一个很关键的内容,关系映射和属性映射一样,也是在 OnModelCreating 中配置映射.EF中的关系映射有如下三种: One-to-Many Relationship(一对多) ...

  7. Java对象关系映射(ORM)

    一.什么是对象关系映射 简单来说,对象关系映射即是将Java中的对象一一对应映射到MySQL(本文基于MySQL)的Table(表)中,通过对对象各个属性赋值来更新数据库. 官方的说,对象关系映射(O ...

  8. 对象关系映射(ORM)

      本文主要介绍 对象关系映射(ORM) 是什么,以及它的优缺点. 一.ORM 简介   面向对象是从软件工程基本原则(如耦合.聚合.封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两 ...

  9. 【Hibernate】Hibernate实体映射——单边的一对多关系

    数据库中的表是有关系的,两个表之间可以通过外键关联.如果把表抽象为实体类,这些关系可以抽象为实体之间的一对一,一对多,多对一等关系.hibernate能处理这些复杂的关系,前提是要正确配置这些关系. ...

最新文章

  1. rails安装与卸载
  2. 神盾局hive是什么_《神盾局特工》第七季再爆幕后照,这位角色复古装又美出新高度...
  3. 个人作业1——四则运算题目生成程序(基于控制台)
  4. openssl 使用命令
  5. STM32 Option Bytes位 重置为出厂设置
  6. Pandas打印所有行和列(显示所有的行和列)
  7. GPU Gems1 - 26 OpenEXR图像文件格式与HDR(The OpenEXR Image File Format and HDR)
  8. poj2793 素数和
  9. Pytorch:手动求导和autograd的计算对比
  10. ESP32电容式触摸传感器引脚实例
  11. idea插件开发实战基础
  12. kettle使用httpClient获取ES索引数据
  13. java 读取Excel(.xls格式)
  14. html旋转木马 代码,JavaScript实现旋转木马轮播图
  15. Windows历史版本下载
  16. UHL IOL NVMe测试工具安装及使用的常见问题
  17. 赵小楼《天道》《遥远的救世主》深度解析(142)贫富差距化是常态,扶贫不是拉平平均值,而是强者去关注弱者
  18. app:processDebugManifest 错误
  19. 微信公众号开发之文本回复(三)
  20. shp2sdo的下载及使用说明

热门文章

  1. python opencv转换bytesio
  2. makefile跨平台,动态库,静态库
  3. 存储过程调试技巧搜集
  4. dedecms channel php,织梦标签代码Channel标记怎么用
  5. 一次mysql数据库连接池泄露的解决经历
  6. cuda 安装_win10+VS 2017 安装 CUDA(Visual Studio Integration失败)
  7. SQL语句中ON DUPLICATE KEY UPDATE column=IF(条件,值1,值2 ) 的使用
  8. linux之sed命令n,N,d,D,p,P,h,H,g,G,x解析
  9. 批处理下的 cd 与 cd /d 命令
  10. linux下使用free命令查看实际内存占用