Mybatis实现多对多关联查询

本文介绍了如何使用Mybatis实现多对多关联查询,包括ER图、数据库表设计、实体类创建、Mapper接口与XML配置、ServiceImpl实现类以及Controller的编写。通过访问/listBlog和/listTag接口进行测试,成功实现了根据一方ID获取另一方所有信息的功能。
摘要由CSDN通过智能技术生成

前言

由于之前写的系统中还没有遇到多对多的关联查询,最多也就实现了一对多的关联查询,因此一直没有解决自己对多对多的是如何实现的疑惑。今天它来了,话不多说,直接上步骤。

步骤

一、ER图

在这里插入图片描述

二、数据库表

1、博客表(blog_tb)

在这里插入图片描述

2、标签表(tag_tb)

在这里插入图片描述

3、中间表(blog_tag_tb)

在这里插入图片描述
blog_tag_tb表外键:
在这里插入图片描述

三、实体类

1、Blog实体
package com.liyue.blog.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author liyue
 */
public class Blog {
   
    private Long id;
    private String title;
    private String content;
    private String firstPicture;
    private String flag;
    private Integer views;
    private boolean appreciation;
    private boolean shareStatement;
    private boolean commentable;
    private boolean published;
    private boolean recommend;

    private Date createTime;
    private Date updateTime;

    private List<Tag> tags = new ArrayList<>();

    public Blog() {
   
    }
    
	//get、set方法
}

2、Tag实体
package com.liyue.blog.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author liyue
 */
public class Tag {
   
    private Long id;
    private String name;

    private Date createTime;
    private Date updateTime;

    private List<Blog> blogs = new ArrayList<>();

    public Tag() {
   
    }

	//get、set方法
}

3、BlogTag实体
package com.liyue.blog.entity;

/**
 * @author liyue
 */
public class BlogTag {
   
    private Long id;
    private Long blogId;
    private Long tagId;
    
    public BlogTag() {
   
    }

	//get、set方法
}

四、Mapper接口

1、BlogMapper接口
package com.liyue.blog.dao;


import com.liyue.blog.entity.Blog;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author liyue
 */
public interface BlogMapper {
   
    /**
     * 分页查询所有blog
     * @return List<Blog>
     */
    public List<Blog> listBlog();
}
2、TagMapper接口
package com.liyue.blog.dao;

import com.liyue.blog.entity.Tag;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author liyue
 */
public interface TagMapper {
   
    /**
     * 查询所有标签
     * @return List<Tag>
     */
    public List<Tag> listTag();
}
3、BlogTagMapper接口
package com.liyue.blog.dao;

import com.liyue.blog.entity.Blog;
import com.liyue.blog.entity.Tag;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author liyue
 */
public interface BlogTagMapper {
   
    /**
     * 根据blog_id查询所有Tag
     * @param id
     * @return
     */
    public 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值