博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis一对多双向关联——MyBatis学习笔记之七
阅读量:6176 次
发布时间:2019-06-21

本文共 2669 字,大约阅读时间需要 8 分钟。

      好久没写MyBatis了,今天继续。

      处理has-one关系需要用到association元素,而处理has many关系则需要用到collection元素。例如本例中,假设一名教师可同时指导多名学生,下面就来介绍如何使用collection元素来实现这种映射,具体的任务是查询出教师及其指导的多个学生的信息(本示例源代码下载页面:)。

一、为Teacher实体增加相关属性

      为教师实体增加指导学生集合的属性如下:

private List
supStudents;//指导学生

       并为其增加setter和getter方法,这里略过。

二、TeacherMapper接口

      为实现教师实体映射,应先创建映射器接口如下:

package com.abc.mapper;import com.abc.domain.Teacher;public interface TeacherMapper {public Teacher getById(int id);}

三、映射文件

      为教师实体创建的映射文件如下:

       相应地,学生实体的映射文件如下:

       在工程的src\resources目录下新建子目录mappers,用来统一存放映射文件。为了能让MyBatis找到这些映射文件,修改其核心配置文件configuration.xml中的mappers元素如下:

       注意:resources目录在工程编译前会被复制到classes目录下(详见工程生成文件build.xml中的copy-resources和compile这两个target),而classes目录会被ant添加到classpath中。

四、执行类

      执行类为CollectionDemo,其内容如下:

package com.demo;import org.springframework.context.ApplicationContext;import com.abc.mapper.StudentMapper;import com.abc.mapper.TeacherMapper;import com.abc.domain.Teacher;import com.abc.domain.Student;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.List;public class CollectionDemo{private static ApplicationContext ctx;static{//在类路径下寻找resources/beans.xml文件ctx = new ClassPathXmlApplicationContext("resources/beans.xml");}public static void main(String[] args){//从Spring容器中请求映射器TeacherMapper mapper =(TeacherMapper)ctx.getBean("teacherMapper");//查询id为1的教师Teacher teacher = mapper.getById(1);if(teacher == null){System.out.println("未找到相关教师信息。");}else{//教师信息System.out.println("**********************************************");System.out.println("教师姓名:" + "  " + teacher.getName());System.out.println("教师职称:" + "  " + teacher.getTitle());System.out.println("**********************************************");System.out.println("指导学生信息:");//遍历指导的学生for(Student s : teacher.getSupStudents()){System.out.println("**********************************************");System.out.println( s.getName() + "  " + s.getGender() + "  " + s.getGrade()+ "  " + s.getMajor());//从学生端访问教师System.out.println("指导教师研究方向:" + s.getSupervisor().getResearchArea());}System.out.println("**********************************************");}}}

       从中可看出,可以从任意一端访问另一端的对象。

五、修改build.xml

      为了能用ant运行此程序,需修改build.xml中的run target,指定类CollectionDemo为执行类。如下:

运行结果如下:

      

       MyBatis技术交流群:188972810,或扫描二维码:


【MyBatis学习笔记】系列之七:MyBatis一对多双向关联

转载地址:http://zfwda.baihongyu.com/

你可能感兴趣的文章
Android基础—四大组件之Activity
查看>>
Nginx 学习笔记
查看>>
你为什么选择程序员这个职业?
查看>>
[译] 用于 iOS 的 ML Kit 教程:识别图像中的文字
查看>>
InnoDB大数据插入的优化和FULLTEXT索引性能优化的调研
查看>>
有关https的SSL加密方式
查看>>
ES6的开发环境搭建
查看>>
iOS JSON、XML解析技巧
查看>>
Android下InputStream发生网络中断时的解决办法的代码
查看>>
8 jQuery学习笔记第八节 Jq的效果之自定义动画
查看>>
8月不支持 64 位,App 将无法上架 Google Play!需要怎么做?
查看>>
Vs - 基于 d3.js 和 vue.js 的数据可视化
查看>>
优雅地使用loading
查看>>
Node8.0 之 Napi 探秘
查看>>
TypeScript入坑
查看>>
(三)spring cloud微服务分布式云架构-服务网关zuul初级篇
查看>>
Spring Cloud--Honghu Cloud分布式微服务云系统—System系统管理
查看>>
ubuntu老旧软件源
查看>>
Linux服务器配置——SAMBA
查看>>
我的WP7应用
查看>>