MySql教程

使用mybatis框架对MySQL表进行关联映射查询

本文主要是介绍使用mybatis框架对MySQL表进行关联映射查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

使用mybatis框架对MySQL表进行关联映射查询XML配置

  • 一对一关联映射
    • - 嵌套查询
    • - 嵌套结果
  • 一对多关联映射
    • - 嵌套结果
    • - 嵌套查询
  • 多对多关联映射
    • - 嵌套结果
    • - 嵌套查询
    • - 关联表结构

一对一关联映射

  association元素

- 嵌套查询

<select id="id名" parameterType="id参数类型"
	resultMap="外部resultMap名">
	select * from 查询的主表 where id = #{id}
</select>
<resultMap type="查询表对应的实体类(路径.JOPO类)"
	id="外部resultMap名">
	<id property="主键属性名" column="对应表的主键名" />
	<result property="其他类属性名" column="对应表的普通列名" />
	···
	<association property="查询表对应的实体类的对象属性" column="列名"
		javaType="映射表对应的实体对象属性的类型(路径.JOPO类)"
		select="引入嵌套查询的子SQL语句(路径.id名)" />
</resultMap>
<select id="被引入嵌套查询的子SQL语句 id名" parameterType="id参数类型"
		resultType="查表对应的Java类">
	select * from 映射表 where id = #{id}
</select>

- 嵌套结果

<select id="id名" parameterType="id参数类型"
	resultMap="外部resultMap名">
	select a.*,b.普通列名(对应result元素) 
	from 查询的主表 a,映射表 b 
	where a.id=b.id and a.id = #{id}
</select>
<resultMap type="查询表对应的实体类(路径.JOPO类)"
	id="外部resultMap名">
	<id property="主键属性名" column="对应表的主键名" />
	<result property="其他类属性名" column="对应表的普通列名" />
	···
	<association property="映射表对应的实体类的对象属性" javaType="映射到实体对象属性的类型(路径.JOPO类)">
		<id property="映射实体类的主键属性名" column="映射表的主键名" />
		<result property="映射实体类的其他类属性名" column="映射表的普通列名" />
		···
	</association>
</resultMap>

一对多关联映射

  collection元素

- 嵌套结果

<select id="id名" parameterType="id参数类型"
	resultMap="外部resultMap名">
	select a.*,b.普通列名(对应result元素) 
	from 查询的主表 a,映射表 b 
	where a.id=b.id and a.id = #{id}
</select>
<resultMap type="查询表对应的实体类(路径.JOPO类)"
	id="外部resultMap名">
	<id property="主键属性名" column="对应表的主键名" />
	<result property="其他类属性名" column="对应表的普通列名" />
	···
	<collection property="查询表对应的实体类的对象属性" 
	ofType="映射实体类(路径.JOPO类)">
		<id property="主键属性名" column="对应表的主键名" />
		<result property="其他类属性名" column="对应表的普通列名" />
	···
	</collection>
</resultMap>

- 嵌套查询

<select id="id名" parameterType="id参数类型"
	resultMap="外部resultMap名">
	select * from 查询的主表 where id=#{id}
</select>
<resultMap type="查询表对应的实体类(路径.JOPO类)"
	id="外部resultMap名">
	<id property="主键属性名" column="对应表的主键名" />
	<result property="其他类属性名" column="对应表的普通列名" />
	···
	<collection property="查询表对应的实体类的对象属性" column="列名"
	ofType="映射实体类(路径.JOPO类)" 
	select="引入嵌套查询的子SQL语句(路径.id名)"/>
</resultMap>
	
<resultMap type="查询表对应的实体类(路径.JOPO类)"
	id="外部resultMap名">
	<id property="主键属性名" column="对应表的主键名" />
	<result property="其他类属性名" column="对应表的普通列名" />
	···
</resultMap>
<select  id="id名" resultMap="外部resultMap名">
	select * from 映射表 where 外键_id=#{id}
</select>

多对多关联映射

  collection元素

- 嵌套结果

<select id="id名" parameterType="id参数类型"
	resultMap="外部resultMap名">
	select a.*,b.普通列名(对应result元素) from 查询的主表 a,映射表 b,关联表 c
	where c.查询的主表_id=查询的主表.id and c.映射表_id=映射表.id and 查询的主表.id=#{id}
</select>
<resultMap type="查询表对应的实体类(路径.JOPO类)"
	id="外部resultMap名">
	<id property="主键属性名" column="对应表的主键名" />
	<result property="其他类属性名" column="对应表的普通列名" />
···
	<collection property="查询表对应的实体类的对象属性" 
	ofType="映射实体类(路径.JOPO类)">
		<id property="主键属性名" column="对应表的主键名" />
		<result property="其他类属性名" column="对应表的普通列名" />
		···
	</collection>
</resultMap>

- 嵌套查询

<select id="id名" parameterType="id参数类型"
	resultMap="外部resultMap名">
	select * from 查询的主表 where id=#{id}
</select>
<resultMap type="查询表对应的实体类(路径.JOPO类)"
	id="外部resultMap名">
	<id property="主键属性名" column="对应表的主键名" />
	<result property="其他类属性名" column="对应表的普通列名" />
	···
	<collection property="查询表对应的实体类的对象属性" column="列名"
	ofType="映射实体类(路径.JOPO类)" 
	select="引入嵌套查询的子SQL语句(路径.id名)">
	</collection>
</resultMap>
<resultMap type="查询表对应的实体类(路径.JOPO类)"
	id="外部resultMap名">
	<id property="主键属性名" column="对应表的主键名" />
	<result property="其他类属性名" column="对应表的普通列名" />
	···
</resultMap>
<select id="id名" parameterType="id参数类型"
	resultMap="外部resultMap名">
	select * from 映射表 where id in(
		select 映射表_id from 关联表 where 查询的主表_id=#{id}
	)
</select>

- 关联表结构

关联表id查询的主表id对应的映射表id

关系:
查询的主表——关联表——映射表
                  1   n            n  1

XML关键配置代码如上。我已经用便于理解的文字替换了可替换的部分,如果看代码有有错误或者不明白的地方可以留言交流~

这篇关于使用mybatis框架对MySQL表进行关联映射查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!