MyBatis 一对一和一对多映射关系的关联和配置 适用于关联表查询

分享一遍专门针对刚刚从事Java人员的MyBatis关联查询映射关系详细描述:

这篇文章只适用于关联查询 ! ! !MyBatis 一对一和一对多映射关系的关联和配置 适用于关联表查询

上图中是一个实体类,属于实体类的字段是没用框起来的 ,

(1)实现一对一关系就先在实体类中添加一个你需要对应的对象作为实体类的字段

(2)同理,实现一对多关系就现在实体类中添加一个你需要对应集合作为实体类的字段

实体类这里就这样了


重点是到下面的Mapper.xml的配置, 这配置不是难, 只要多写几次就可以了, 我写这篇文章其实是想给我自己看的, 因为我只要隔一周不写就会忘掉, 只能去翻以前项目中写到过的mapper这样很麻烦, 所以我这边文章其实也是给自己的一个笔记, 可能写得不好, 都可以评论问下我!

MyBatis 一对一和一对多映射关系的关联和配置 适用于关联表查询

 从这个mapper.xml中可以看到一对一关系映射是使用association标签,其中property中的值对应实体类中对像名,javaType就是对应着实体类对象的包路径, 中间括起来的值就是你需要关联查询出来的字段, 这个是没有限制的, 我这里的实体类中有多个字段, 但是我只需要两个所以我只写了两个在里面!

 同理, 一对多关系也是这样,但是要注意的是类型哪里不是用javaType,而是改为ofType 存放的内容其实是一样的


上面其实已经描述完两种情况的映射关系, 关联查询sql这个根据个人逻辑去写, 这里就不写sql了, 免得误导!


sql也是有一个注意点就是返回值, 因为我们是关联对应关系, 其实我们的对象或者集合都已经放到开始的实体类中, 所以我们就算查询的单单是对应关系对象的字段时, resultM的值都应该是实体类的BaseResultMap, 如:

select e.empEmployeeId form  t_init_sap_emp_role r  join  t_emp_employee e  on  r.emp_code = e.empEmployeeCode

上面sql虽然查的是employee的字段,但是因为对应关系, 返回值都是返回原先实体类的


这篇文章只适用于关联查询 ! ! !

这篇文章只适用于关联查询 ! ! !

这篇文章只适用于关联查询 ! ! !