mysql一对多mapper里怎么写_Mybatis一对多、多对一处理

数据库设计

我们用学生和老师的例子来说明:

一对多:一个老师有多个学生,转换为程序设计语言即为一个老师对象下有一个学生对象集合。

多对一:多个学生有同一个老师,学生对象里有一个属性关联着老师。

687239ac16b0022d0b9a40db901466c0.png

创建学生、教师表

多对一处理

1、Student

Teacher

2、编写 Mapper 接口

StudentMapper.java 定义了两个查询方法,基于不同的实现方式。

3、编写 Mapper 接口对应的配置文件

关于 StudentMapper.xml 的书写有两种方式。

按查询嵌套处理

关于 getTeacher 查询中的 tid,是随便命名的,如果该查询 SQL 有多个查询条件,则必须一致,如下所示:

测试代码

执行结果为:

按结果嵌套处理

StudentMapper.xml

测试代码

上述两种方式的执行效果是一致的,选择哪种方式根据个人理解,觉得哪种简单就使用哪种。

一对多的处理

1、实体类

2、Mapper 接口

3、TeacherMapper.xml

同多对一处理一样,这里也有两种实现方式。

按查询嵌套处理

测试

执行结果为:

按结果嵌套处理

测试

总结

1、 联-association 用于一对一和多对一

2、 集合-collection 用于一对多的关系

3、 JavaType 和 ofType 都是用来指定对象类型的

JavaType 是用来指定 pojo 中属性的类型

ofType 指定的是映射到 list 集合属性中 pojo 的类型。

参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值