Mybatis关系映射总结

自动映射

首先,查询语句查到结果后要封装到实体类中,但是查询结果是如何映射到实体类的各个属性中的?

Mybatis会帮助我们自动映射,前提是满足几个条件:

原则

1.结果集中的列明与实体类中的属性名一致。可忽略大小写。

2.但是设计数据库的时候一般都会用到“_”间隔,如create_time;而实体类中采用驼峰命名。如createTime

解决方法:在主配置文件中开启驼峰映射:

3.取别名,取别名为java对象的属性名。

简单映射

如果不能自动映射了,那么需要我们手动定义映射关系了。也就是ResultMap啦。

一般单表查询用取别名就行了,ResultMap更多用到关联映射中。


在数据库中的关系类型有以下几种:

这是上课老师写的,课上没太听明白。。后面看别的视频看懂了。意思是这样的:

数据之间的关系有一对一、一对多、多对一、多对多。

但是我们在写实际业务的时候,不会出现多对x的形式出现。

比如说:

多对一:一个牧民有很多头牛。

对于每个牛来说,它自己只对应一个牧民。所以说是一对一。

多对多:一个老师有很多学生,一个学生有多个老师。

对于每个老师来说,他有多个而学生,所以是一对多。

对于每个学生来说,他有多个老师,所以也是一对多。

所以多对多实际是两个一对多关系。

关联映射

解决对象中有一个其他对象的关系问题。

1.嵌套结果->表连接查询。

注:association标签里不查的列可以不进行映射。

2.嵌套查询->子查询。建议少用

注:嵌套查询实际上执行了两次查询语句,缺点是N+1效率低下问题。

支持fetchType="lazy"懒加载。

集合映射

解决对象有多个其他对象(集合)的关系问题。

猜你喜欢

转载自blog.csdn.net/weixin_44284276/article/details/114302234