摘要:本文主要向大家介绍了数据库入门的MyBatis中多对多关系的映射和查询,通过具体的代码向大家展示,希望对大家学习数据库入门有所帮助。
本文主要向大家介绍了数据库入门的MyBatis中多对多关系的映射和查询,通过具体的代码向大家展示,希望对大家学习数据库入门有所帮助。
MyBatis中多对多关系的映射和查询
创建表:
笔者这里使用 中间表 连接 图书表 和 图书类别表,图书表中 没有使用外键关联 图书类别表
而是在中间表中引用了 图书主键 和 类别主键
通过中间表来 表示 图书 和 图书类别 的关系
建立图书表(图书编号,图书名字)
create table book ( bid int primary key auto_increment, bname varchar(20) ); create table category ( cid int primary key auto_increment, cname varchar(20) ); 建立中间表(图书编号,类别编号) create table middle ( m_bid int, m_cid int, constraint fk_bid foreign key(m_bid) references book(bid), constraint fk_cid foreign key(m_cid) references category(cid) ); insert into category values (default,'java'); insert into category values (default,'c++'); insert into category values (default,'mysql'); insert into book values (default,'SQL技术'); insert into book values (default,'SSM+MySQL详解'); insert into book values (default,'C++和java对比'); insert into middle values (1,3); insert into middle values (2,1); insert into middle values (2,3); insert into middle values (3,2); insert into middle values (3,1);
现在我们打开生成的 图书实体类 看一下
public class Book {
private Integer bid;
private String bname;
public Integer getBid() {
return bid;
}
public void setBid(Integer bid) {
this.bid = bid;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname == null ? null : bname.trim();
}
}只有图书编号、图书名字 这两个属性,而我们的需求是 得到图书的同时,得到该图书所属的 所有类别, 所以 我们可以考虑 给图书实体类 添加 一个 图书类别的集合
修改后的图书实体类 如下
public class Book {
private Integer bid;
private String bname;
private Listcategories;
public Integer getBid() {
return bid;
}
public void setBid(Integer bid) {
this.bid = bid;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname == null ? null : bname.trim();
}
public ListgetCategories() {
return categories;
}
public void setCategories(Listcategories) {
this.categories = categories;
}
}将图书的映射文件和DAO接口如下
public interface BookMapper {
ListqueryAll();
}
我们开始编写,编写结果如下
select
*
from
book b
inner join
middle m
on
b.bid=m.m_bid
inner join
category c
on
m.m_cid=c.cid
最后我们 编写main方法测试
public class MyMain {
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = factory.openSession();
BookMapper bookMapper = session.getMapper(BookMapper.class);
for (Book book : bookMapper.queryAll()) {
System.out.print("["+book.getBname()+"]");
for(Category category :book.getCategories()){
System.out.print(category.getCname()+"\t");
}
System.out.println("\n");
}
}
}希望这篇文章可以帮助到你,总之同学们,IT资讯尽在职坐标。
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号