MyBatis多对多关系关联id含逗号查法

MyBatis多对多关系关联id含逗号查法


父表:
在这里插入图片描述
子表: 在这里插入图片描述

多对多关系我没用第三表做关联,这里是把关联的id设为varchar类型用,分割。所以关联时子表的devopsid中是否含有父表的主键id所以用FIND_IN_SET(父表的id,子表的devopsid):精确查询devopsid中含有父表的id。

sql语句:SELECT * FROM oper_devops o LEFT JOIN oper_devops_maintain o1 on FIND_IN_SET(o.id,o1.devopsid)

但我们想返回一个 父类中含多个子的数据形式:
在这里插入图片描述
需要定义一个Vo类:

import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;


**专业代缴补交社保公积金,限南京合肥。**



public class MainAndDevOpsVo{
   

	private Long mainid;
	
	private String site;
    
	private String siteid;
	
	private String personnel;
    
    private String personnelid;
	
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date endexpecttime;

	private String devopsid;
    
    private Long delstatus;
	
	private List<DevOps> devOps;

	public Long getMainid() {
   
		return mainid;
	}

	public void setMainid(Long mainid) {
   
		this.mainid = mainid;
	}

	public String getSite() {
   
		return site;
	}

	public void setSite(String site) {
   
		this.site = site;
	}

	public String getSiteid() {
   
		return siteid;
	}

	public void setSiteid(String siteid) {
   
		this.siteid = siteid;
	}

	public String getPersonnel() {
   
		return personnel;
	}

	public void setPersonnel(String personnel) {
   
		this.personnel = personnel;
	}

	public Date getEndexpecttime() {
   
		return endexpecttime;
	}

	public void setEndexpecttime(Date endexpecttime) 
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: MyBatis 中实现多对多关联查询,需要用到三张表:两张表为多对多关联表,一张表为中间表。下面是一个基本的多对多查询语句: ``` <select id="findUsersByRole" resultMap="userResultMap"> SELECT u.* FROM user u INNER JOIN user_role ur ON u.id = ur.user_id INNER JOIN role r ON r.id = ur.role_id WHERE r.id = #{roleId} </select> ``` 这个查询语句将会查询所有拥有指定角色的用户。其中,user 和 role 表是多对多关联表,user_role 表是中间表。在这个查询语句中,我们使用了 INNER JOIN 将三张表连接起来,然后使用 WHERE 子句过滤出指定角色的用户。 除此之外,我们还需要在映射文件中定义 resultMap,将查询出来的结果映射到 User 对象中。这里给出一个简单的 resultMap 的定义: ``` <resultMap id="userResultMap" type="User"> <result property="id" column="id"/> <result property="username" column="username"/> <result property="password" column="password"/> <result property="email" column="email"/> <result property="roles" resultMap="roleResultMap"/> </resultMap> <resultMap id="roleResultMap" type="Role"> <result property="id" column="id"/> <result property="name" column="name"/> </resultMap> ``` 这个 resultMap 将会把查询出来的结果映射到 User 对象中,同时也将会映射出每个用户所拥有的角色。注意,我们在 User 类中定义了一个 roles 属性,并且在 resultMap 中使用了另外一个 resultMap 来映射出每个角色的信息。 这样,我们就可以使用 MyBatis 实现多对多关联查询了。 ### 回答2: MyBatis是一种支持多对多关联查询的Java持久层框架。在进行多对多关联查询时,我们需要以下几个步骤: 1. 定义数据库表结构:创建多对多关联的中间表,并将其与关联的两个表进行外键关联。 2. 定义实体类:创建与数据库表对应的实体类,并在实体类中使用注解或XML配置文件映射数据库表的字段。 3. 编写Mapper接口:创建Mapper接口,并在接口中定义多对多关联查询的方法。方法的返回值可以是List、Set、Map等类型。 4. 编写Mapper XML配置文件:在Mapper XML配置文件中,使用SQL语句进行多对多关联查询的编写。可以使用多种SQL语句来实现多对多关联查询,例如使用嵌套查询、联合查询等。 5. 调用查询方法:在Java代码中调用Mapper接口中定义的多对多关联查询方法,完成数据库查询操作。 多对多关联查询可以通过MyBatis的映射来简化数据库操作,提高开发效率。使用MyBatis进行多对多关联查询,可以同时获取关联双方的数据,并将其映射为Java对象,方便在业务逻辑中使用。在进行多对多关联查询时,需要注意数据库表的设计和Mapper接口的定义,以及SQL语句的编写。 总而言之,MyBatis提供了简单且灵活的方式来进行多对多关联查询。通过合理地设计数据库表结构,定义实体类和Mapper接口,以及编写合适的SQL语句,我们可以轻松地实现多对多关联查询。 ### 回答3: MyBatis 是一款非常流行的 Java 持久层框架,它提供了许多强大的功能,包括多对多关联查询。 多对多关联查询指的是在两个实体之间存在一种多对多关系,并且需要查询它们之间的关联关系。为了实现多对多关联查询,我们需要进行以下几个步骤: 1. 定义数据库表结构:需要创建两个实体对应的数据库表,并且创建一个中间表来存储它们之间的关联关系。 2. 创建实体类:根据数据库表结构创建对应的实体类,并在实体类中定义它们之间的关联关系。 3. 编写 SQL 查询语句:使用 MyBatis 提供的 XML 配置文件编写查询语句,通过连接两个实体的中间表来获取它们之间的关联关系。 4. 创建映射文件:在 MyBatis 的映射文件中将查询语句与实体类进行映射。 5. 调用查询方法:在程序中通过调用 MyBatis 提供的查询方法来执行查询操作,并获取查询结果。 在进行多对多关联查询时,需要注意的一些细节: 1. 在查询语句中使用 JOIN 操作来连接两个实体的中间表。 2. 可以使用嵌套查询来获取关联实体的相关信息。 3. 通过 MyBatis 提供的查询结果映射功能,将查询结果自动映射到实体类中。 总之,MyBatis 是一款非常强大的框架,可以帮助我们轻松实现多对多关联查询。通过合理的数据库设计、实体类定义和查询语句编写,我们可以方便地获取到多对多关系的相关数据。希望以上回答能给您带来帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值