摘要:本文主要向大家介绍了数据库入门的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资讯尽在职坐标。
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号