最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

mybatis association一对一关联查询与collection一对多关联查询学习

Javaweb 太平洋学习网 浏览 评论

mybatis association是一对一的关联查询,所谓的一对一关联查询,理解很简单。比如我们勾选“小明”同学之后带出“小明爸爸”的年龄,职业等等个人信息,因为小明就一个爸爸,所以是一对一关系。

如果能带出“一群小明爸爸”,那就不是mybatis association一对一关联查询,而是属于mybatis collection一对多关联查询的范畴了,如果小明有很多爸爸就。。。。了!

一:下面我们先来学习mybatis association一对一关联查询吧!

association一对一关联查询需要两个实体类,一个是小明(XiaoMing)的实体类,一个是小明爸爸(XiaoMingFather)的实体类,分别如下:

小明的实体类(XiaoMing)如下:

public class XiaoMing {
        //小明主键id
	private int id;
	//名字
	private String name;
	
	//爸爸,一对一查询之后会将爸爸的对象赋值给这个属性
	private XiaoMingFather father;
	
	//getter setter...
}

小明爸爸的实体类(XiaoMingFather)如下:

public class XiaoMingFather {
        //小明爸爸主键id
	private int id;
	//小明的id,后面会用到小明id查出小明爸爸对象
	private int xiaomingid;
	//小明爸爸的名字
	private String name;
	//小明爸爸的年龄
	private int age;
	//小明爸爸的工作名称
	private String jobName;
	
	//getter setter...
}

步骤一:在小明爸爸的mapper java类中加入一个接口,根据小明id查询小明爸爸的对象,代码如下:

package com.tpyyes.dao; //mapper所在包路径

public interface XiaoMingFatherMapper{

	//返回对象为小明爸爸,传入的为小明id
	XiaoMingFather selectbyXiaomingid(Integer xiaomingid);
	
}

步骤二:在小明爸爸的mapper xml文件中实现selectbyXiaomingid()这个查询语句,小编将这个文件取名为XiaoMingFatherMapper.xml,加入“小明爸爸”的数据库表名为“xiao_ming_father”,则代码如下:

<select id="selectbyXiaomingid" parameterType="java.lang.Integer" resultMap="BaseResultMap">
	select * from xiao_ming_father where id = #{xiaomingid,jdbcType=INTEGER}
</select>

步骤三:在小明mapper xml配置文件中添加如下的resultMap映射,在末尾加入“association”标签,传入的值是小明的id,映射文件如下:

<resultMap id="BaseResultMap" type="com.voavoice.english.model.Menu">
	<id column="id" jdbcType="INTEGER" property="id" />
	<result column="name" jdbcType="VARCHAR" property="name" />
	
	// father属性就是小明实体类中的爸爸属性,id是小明的id值,根据小明的id查询出小明爸爸!
	<association property="father" column="id" select="com.tpyyes.dao.XiaoMingFatherMapper.selectbyXiaomingid"/>
</resultMap>

通过上面三个步骤之后,当我们在程序中根据id或其它条件查询小明对象的时候,程序就会自动去“xiao_ming_father”这张表中把小明爸爸的数据查询出来,并赋值到“father”这个属性中了,很简单吧!

二:mybatis collection一对多关联查询

所谓的一对多关联查询,就是根据一个小明的id能查询出“多个小明爸爸”,当我们这样理解的时候,就不难学习mybatis collection一对多关联查询了,其实只需要改变三个部分,就可以查询出小明多个爸爸的信息了,如下:

修改部分一:将小明的实体类(XiaoMing)中的father改成List集合,实体类如下:

public class XiaoMing {
        //小明主键id
	private int id;
	//名字
	private String name;
	
	//爸爸,一对一查询之后会将爸爸的对象赋值给这个属性
	private List<XiaoMingFather> fatherList;
	
	//getter setter...
}

修改部分二:将小明爸爸的mapper java类中的接口从返回的实体类对象变成返回List集合,代码如下:

package com.tpyyes.dao; //mapper所在包路径

public interface XiaoMingFatherMapper{

	//返回对象为小明爸爸的集合,传入的为小明id
	List<XiaoMingFather> selectbyXiaomingid(Integer xiaomingid);
	
}

修改部分三:将小明mapper xml配置中的association标签这部分,改成collection标签,外键属性改成“fatherList”,传入到selectbyXiaomingid()方法中的值仍然是小明的id,代码如下:

<collection property="fatherList" column="id" select="com.tpyyes.dao.XiaoMingFatherMapper.selectbyXiaomingid"/>

这样,查询小明的个人信息,就会自动带出小明的多个爸爸了!牛掰吧!

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/javaweb/2018/1019/782.html

    与本文相关的文章

    发表我的评论
    取消评论

    表情

    您的回复是我们的动力!

    • 昵称 (必填)

    网友最新评论