数据库如图:
![802e2e0399604b6a9612c89eb445d8f6.png](https://i-blog.csdnimg.cn/blog_migrate/35db853e42c2351d90167087c983b8c5.png)
![c041b99c38f3f5e1e45da77114a475cb.png](https://i-blog.csdnimg.cn/blog_migrate/c8bb6b4bf286d0f84300db9d844f59d1.png)
第一张图是user表,user表里的d_id保存的就是第二张表deptartment的id。意思是:2号员工李四的d_id =1 就意思是李四是开发部。
实体类:(注意这里实体类和数据库的字段都对不上,需要使用resultMap进行映射)
![397cff832c33c1b527eb84b5891b5fda.png](https://i-blog.csdnimg.cn/blog_migrate/8d3d55bae167c259597a45964792e762.png)
![5a5957d411c22574186bedc62fe0c4fb.png](https://i-blog.csdnimg.cn/blog_migrate/d244c82549c3c363ea5592356f82b553.png)
现需求是根据用户id查出用户信息的同时,还要查出用户所在的部门(开发部还是测试部)
sql如下
![f0be7b5b03cf94cadfe68425848c207e.png](https://i-blog.csdnimg.cn/blog_migrate/afbc084a6291d8dadbeb745eceb75ebf.png)
我们可以看到 user的d_id 肯定是和 dept的id是一样的,现在一条记录里面有2个id列
![7996ef8fb840dccaa6d7c81db52bdfc3.png](https://i-blog.csdnimg.cn/blog_migrate/232678b7a0d6357072ec56ab78857805.jpeg)
改个名字看看,重新写一下sql:
![94e2b1c65add7abca023bcd6206e44e9.png](https://i-blog.csdnimg.cn/blog_migrate/596cddd2043d498ad883334c26a33af9.jpeg)
![0d51112059303f081feffb1ccc120d7d.png](https://i-blog.csdnimg.cn/blog_migrate/ae010cca0400011ef994a7c0f186face.png)
现在想一下 结果集怎么封装呢?resultType肯定不行。所以定义resultMap。
下来写xml
![d2bb2c57e8fec5734cc0ba5f65384080.png](https://i-blog.csdnimg.cn/blog_migrate/b46fbd08247a43cf025f7c804fc3b57e.jpeg)
测试:
![d3aa1062c503fff3123f605474f1b513.png](https://i-blog.csdnimg.cn/blog_migrate/b5934439c513d34027c20a7989434f22.png)
结果:
![1b094995555f835c20b4e6086fa94f52.png](https://i-blog.csdnimg.cn/blog_migrate/f0f8560ecc3fa8b1b2608bcf3a1351ef.jpeg)
还可以这样写:用association 和上图一样因为dept_name 用了别名成了dep_name 所以column就是别名dep_name
![ce113182402866dfb024f5047f92775b.png](https://i-blog.csdnimg.cn/blog_migrate/b13c846578a6cbaa8fd1532a99757ca4.jpeg)
结果是一样的。
上面的sql有点复杂了。 我们想一下
![1934d86eb933af42f08f7875517f03a4.png](https://i-blog.csdnimg.cn/blog_migrate/88e99cdf7f1454aa36ee1b6f7a16cb4c.png)
后面这个红框的列是 deptartment表的列。 再user表里保存了deptartment表的id 。 那么我们可以先根据user表的id把user的信息查出来,然后再根据user中的d_id 把user的部门查出来。
看下怎么实现:
![828003bd70525842c39e635ae1b0da92.png](https://i-blog.csdnimg.cn/blog_migrate/c43494930dabe78e8306b24807bc2085.png)
![5a42d811ccf6302c959f9de88b3b1920.png](https://i-blog.csdnimg.cn/blog_migrate/3a75b002454b983876eb49bbbfa04ef8.jpeg)
association中的select:
![edd03d52954bd1bbfd6db0ec98d00735.png](https://i-blog.csdnimg.cn/blog_migrate/10dbaf494ba73d784f4e216c9cae6726.jpeg)
或者这样写:(如果列多的话,配置一下这个类的resultmap映射,也是可以的。如果列多的话)
![0b5827e5ba94e3fc00af5fadb13f387e.png](https://i-blog.csdnimg.cn/blog_migrate/c1da99d26ddd89fcf34ea669ce4327a0.png)
测试:
![50d5eb4e98482caec65b14e17853ee41.png](https://i-blog.csdnimg.cn/blog_migrate/96212cd04fba22e2e6531cb7f7f71e19.jpeg)
以上这些 我们再查询user的同时,也把deptartment表中的部门信息都查出来了。而有时候我们不需要部门信息,这就造成了数据库的负担。此时可以使用延迟加载就ok了。settings配置
![451d8be0facb657ee8efe02d97dfd753.png](https://i-blog.csdnimg.cn/blog_migrate/31cd43fcac837ed68c4cbd4fdcb53c02.jpeg)