MyBatis如何实现多表查询

目录

一、一对一

1、SQLMapper配置文件

  2、注解

二、一对多

1、SQLMapper配置文件

2、注释


一、一对一

1、SQLMapper配置文件

  • 在xml文件中去做映射;      
  • resultMap 标签里的 id 属性必须是唯一的,select 标签里 resultMap的值必须和 resultMap 标签里的 id 值一致;
  •  一对一在resultMap标签中使用 assocation标签
  • select标签里 id属性的值必须和对应Mapper 接口中对应方法的方法名一致且是唯一的。
<?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.ape.mapper.StudentMapper">
	
	
	
	<resultMap type="Student" id="stu_class_Map">
		<result column="sid" property="sid"/>
		<result column="sname" property="sname"/>
		<result column="birthday" property="birthday"/>
		<result column="ssex" property="ssex"/>
		<result column="classid" property="classid"/>
		

		<association property="bj">
			<result column="classid"  property="classid"/>
			<result column="classname"  property="classname"/>
		</association>
	</resultMap>
	
	<select id="findAllStudent" resultMap="stu_class_Map" >
		select * from student 
		inner join class on student.classid = class.classid
			
	</select>
	 
</mapper>

  2、注解

  • 在 Mapper 接口中写相对应的注解去做映射;
  • 一对一使用One注释。
package com.ape.mapper;

import java.util.List;

import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;


import com.ape.bean.Student;

public interface StudentMapper {
	
	@Results({
		@Result(column="classid",property = "classid"),
		@Result(column = "classid",property = "bj"
				one=@One(select="com.ape.mapper.BanjiMapper.findBanjiByclassid")
				)
	})
	
	@Select("select * from student")
	public List<Student> findAllStudent();
}

二、一对多

1、SQLMapper配置文件

  • 在xml文件中去做映射;      

  • resultMap 标签里的 id 属性必须是唯一的,select 标签里 resultMap的值必须和 resultMap 标签里的 id 值一致;
  •  一对一在resultMap标签中使用 collection标签
  • select标签里 id属性的值必须和对应Mapper 接口中对应方法的方法名一致且是唯一的。
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
<mapper namespace="com.ape.mapper.TeacherMapper">
	
	<resultMap type="Teacher" id="tea_cou_Map">
		<result column="tid" property="tid"/>
		<result column="tname" property="tname"/>
		<result column="tbirthday" property="tbirthday"/>
		<result column="tsex" property="tsex"/>
		<result column="temail" property="temail"/>
		<result column="tmoney" property="tmoney"/>
		<result column="taddress" property="taddress"/>

		<collection property="clist" ofType="Course">
			<result column="cid" property="cid"/>
			<result column="cname" property="cname"/>
			<result column="tid" property="tid"/>
		</collection>
	
	</resultMap>
	
	<select id="findTeacherByTid" resultMap="tea_cou_Map" parameterType="int">
		select * from teacher 
		left join course on teacher.tid = course.tid
		where teacher.tid = #{v}
	</select>
	 
</mapper>

2、注释

  • 在 Mapper 接口中写相对应的注解去做映射;
  • 一对多使用Many注释。
package com.ape.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import com.ape.bean.Banji;

public interface BanjiMapper {
	
	
	@Results({
		@Result(column = "classid",property = "classid"),
		@Result(column = "classid",property = "slist",
		many=@Many(select = "com.ape.mapper.StudentMapper.findStudentByid")
				)
		
	})
	
	@Select("select * from class")
	public List<Banji>  findAllByid(int classid);

}

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值