Mybatis学习----一对一和一对多
来源:互联网 发布:犀牛软件安装教程 编辑:程序博客网 时间:2024/06/05 04:57
数据库表:class:c_id,c_name ,t_id(老师的id)
teacher:t_id,t_name
student: s_id,s_name,c_id
实体类就不写了 直接写上mapper文件吧
classMapper.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--mapper文件的唯一标识--><mapper namespace="cn.limbo.pojo.classMapper"> <!--根据班级查询老师信息,老师和班级的关系是一对一的关系--> <!--方法一--> <select id="getClass" resultMap="getClassMap" parameterType="Integer"> SELECT * FROM class c,teacher t WHERE c.t_id = t.t_id AND c_id = #{id}; </select> <resultMap id="getClassMap" type="Classes"> <id property="id" column="c_id"/> <result property="name" column="c_name"/> <association property="teacher" javaType="teacher"> <id property="id" column="t_id"/> <result property="name" column="t_name"/> </association> </resultMap> <!--方法二--> <select id="getClass2" resultMap="getClass2Map" parameterType="Integer"> SELECT * FROM class WHERE c_id = #{id} </select> <select id="getTeacher" resultType="Teacher" parameterType="Integer"> SELECT t_id id,t_name name FROM teacher WHERE t_id = #{id} </select> <resultMap id="getClass2Map" type="Classes"> <id property="id" column="c_id"/> <result property="name" column="c_name"/> <!--其中association中的column表示为select属性中的sql语句传递什么参数--> <association property="teacher" column="t_id" select="getTeacher"/> </resultMap> <!-- association:用于一对一的关联查询 property:对象属性的名称 javaType:对象属性的类型 column:所对应的外键名称 select使用另一个查询封装的结果 --> <!--根据班级查询老师和学生的信息 班级和老师关系是一对一,和学生关系是一对多--> <!--方法一--> <select id="getStudent" parameterType="Integer" resultMap="getStudentMap"> SELECT * FROM class c , student s, teacher t WHERE c.c_id = s.class_id AND c.t_id = t.t_id AND c.c_id = #{id}; </select> <resultMap id="getStudentMap" type="Classes"> <id property="id" column="c_id" /> <result property="name" column="c_name" /> <association property="teacher" javaType="Teacher"> <id property="id" column="t_id"/> <result property="name" column="t_name" /> </association> <collection property="students" ofType="Student"> <id property="id" column="s_id" /> <result property="name" column="s_name" /> </collection> </resultMap> <!--方法二--> <select id="getClass3" resultMap="getClass3Map"> SELECT * FROM class WHERE c_id=#{id} </select> <select id="getStudent2" resultType="Student"> SELECT s_id id,s_name name FROM student WHERE class_id = #{id} </select> <resultMap id="getClass3Map" type="Classes"> <id property="id" column="c_id" /> <result property="name" column="c_name" /> <association property="teacher" column="t_id" select="getTeacher" /> <collection property="students" column="c_id" select="getStudent" /> </resultMap></mapper>上面就包含了一对一和一对多的情况,我测试过两种方法的效率,感觉差不多,没有什么区别,但是从写法上更加推荐第一种,因为简单
0 0
- Mybatis学习----一对一和一对多
- Mybatis一对一和一对多
- MyBatis学习笔记:一对一和一对多关联表查询
- MyBatis 一对一、一对多
- mybatis 一对一,一对多
- Mybatis一对一和一对多配置
- Mybatis的一对一和一对多
- myBatis 一对一 和一对多映射
- 转载MyBatis的一对一和一对多
- MyBatis 一对一、一对多的
- mybatis一对一,一对多查询
- mybatis教程---MyBatis一对一、MyBatis一对多
- MyBatis框架的学习(五)——一对一关联映射和一对多关联映射
- hibernate和mybatis一对一和一对多配置
- MyBatis学习--关联表查询--一对一一对多
- Mybatis关联查询一对一和一对多的实现
- mybatis的一对多和一对一的关系
- Mybatis关联查询一对一和一对多的实现
- 每日总结10.25
- TreeFrog折腾记(3)——Tutorial翻译(上)
- 大数据云计算学习路线
- 欧拉函数求一个数倒数的循环节长度
- eachrts(1)折线图
- Mybatis学习----一对一和一对多
- 工厂模式与抽象工厂模式的不同
- Log4j 学习笔记(一) 学习指南目录
- 使用 CM 13 自带的 Root 功能
- Leetcode 263-264 ugly number
- 启动终端快捷键
- 有序广播,粘性广播
- <c:forEach 详解
- 织梦dedecms首页列表页ajax点击下拉加载更多文章瀑布流效果