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