mybatis 多表关联映射

xiaoxiao2025-10-21  5

1、一对一 关键字:association 作用:针对pojo对象属性的映射       property:pojo的属性名       javaType:pojo类名 (1) 嵌套结果: 使用嵌套结果映射来处理重复的联合结果的子集

<resultMap type="com.gec.domain.Person" id="basePersonResultMap"> <id column="id" property="personId"/> <result column="name" property="name"/> <result column="sex" property="sex"/> <result column="age" property="age"/> <association property="card" javaType="com.gec.domain.Card"> <!-- 1、构造器注入 <constructor> <idArg column="id" javaType="int"/> <arg column="code" javaType="string"/> </constructor> --> <!-- 2、setter注入 --> <result column="id" property="cardId"/> <result column="code" property="code"/> </association> </resultMap> <select id="queryUserList" resultMap="basePersonResultMap"> select p.id as personId,p.name,p.sex,p.age,c.* from tbl_person p,tbl_card c where p.card_id=c.id; </select>

 

2 、一对多 mybatis如何实现一对多的实现?(学生与班级) (1) 嵌套结果:ClazzMapper.xml

<resultMap type="com.gec.domain.Clazz" id="baseClazzResultMap"> <id column="id" property="clazzId"/> <result column="clazz_name" property="clazzName"/> <result column="code" property="code"/> </resultMap> <resultMap type="com.gec.domain.Clazz" id="queryClazzList2ResultMap" extends="baseClazzResultMap"> <collection property="studentList" javaType="ArrayList" ofType="com.gec.domain.Student"> <id column="stu_id" property="studentId"/> <result column="name" property="name"/> <result column="sex" property="sex"/> <result column="age" property="age"/> </collection> </resultMap> <select id="queryClazzList2" resultMap="queryClazzList2ResultMap"> SELECT c.*, s.id AS stu_id,s.name,s.sex,s.age FROM tbl_clazz c LEFT JOIN tbl_student s ON c.id=s.clazz_id; </select>

 

3、多对多 商品表、订单表之间就是以多对多关联 商品与订单的关系表 描述多对多的数据表实现 (1)商品pojo:Article.java

public class Article implements Serializable { private Integer articleId; private String name; private Double price; private String remark; private List<Order> orders; 省略setter/gettera方法 }

 

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" > <mapper namespace="com.gec.mapper.ArticleMapper"> <resultMap type="article" id="baseArticleResultMap"> <id column="id" property="articleId"/> <result column="NAME" property="name"/> <result column="price" property="price"/> <result column="remark" property="remark"/> </resultMap> <resultMap type="article" id="findArtcleByIdResultMap" extends="baseArticleResultMap"> <collection property="orders" javaType="ArrayList" ofType="com.gec.domain.Article" column="id" select="com.gec.mapper.OrderMapper.findOrderByArticleId" > </collection> </resultMap> <!-- 根据订单id查询商品 --> <select id="findArtcleByOrderId" resultMap="baseArticleResultMap"> select * from tb_article where id in (select article_id from tb_item where order_id=#{id}) </select> <select id="findArtcleById" resultMap="findArtcleByIdResultMap"> select * from tb_article where id=#{id} </select> </mapper>

 

转载请注明原文地址: https://www.6miu.com/read-5038329.html

最新回复(0)