关于Mybatis的一对一关系映射踩坑分享
Mybatis之resultMap标签的子标签“association”
众所周知它是一个关联其它对象的标签,可以用它轻易的实现一对一,一对多,多对多等等结果映射关联
因为刚开始我一直用的jpa和没有"深入了解过的"Mybatis,主要是觉得jpa不够灵活,而且只会mybatis
里面的增删改查标签写SQL,没有了解过嵌套的<if><trim>等等这些,现在我觉得这些子标签才是它
足够灵活的精髓!
比如今天我在学习映射关系时遇到的坑
User OneToMany(Integer id);
下面是我的实体类
![](https://img-blog.csdnimg.cn/8c961c1bd53640299c881a91fc8f81e6.png)
因为这个顺序的缘故我把“association”标签写在了最后一个子标签result的前面(如下图)
![在这里插入图片描述](https://img-blog.csdnimg.cn/37190c5daa2644b291100ea87b22a42e.png)
然后我去Test就一直是报错的,然而我并不知道是什么原因一直提示什么bean没注入啥的还有resultMap结果映射关系应该是它的子标签的一些东西
这个并不是association标签的简单写法,这个只是比较直观
快捷写法
![](https://img-blog.csdnimg.cn/1c1a0e2822ad49a0a728548ed19f47cc.png)
把user表中的id传给密保Dao层的方法,通过id查询密保信息,一般肯定是用户的id和密保设置的id是一致的对吧.但是这两个因为我没有把最后一个result放在association前面导致的报错
![](https://img-blog.csdnimg.cn/30abc068cdff48af9b43504f4ddb9440.png)
这样才是正确的所以记得把association标签放在最后一行,因为我的实体类的密保对象是倒数第二个我就下意识的根据顺序写的所以就错了!
但是我写的sql运行出来只有id有值我改成了完美解决!
select u.*,e.* from user_tab u,encrypted_tab e where u.id=
![在这里插入图片描述](https://img-blog.csdnimg.cn/bdcc2db5e24a42e8b439e672bc8cf726.png)