mybatis3多表查询

mybatis多表查询

一对一查询

用户表和订单表的关系为,一个用户有多张银行卡,一张卡只从属于一个用户。

一对一查询的需求:查询一张银行卡,与此同时查询出该卡所属的用户

对应的SQL语句

  • SELECT a.*,u.id,u.userName,u.birthday,u.sex FROM account a INNER JOIN user u ON a.uid=u.id

创建实体类时应注意:private User user

一对多查询

用户表和订单表的关系为,一个用户有多张银行卡,一张卡只从属于一个用户

一对多查询的需求:查询一个用户,与此同时查询出该用户具有的银行卡

对应的sql语句

  • SELECT u.*,a.id aid,a.accountNum,a.money,a.uid FROM user u LEFT JOIN account a ON u.id=a.uid

创建实体类时注意

  • List accountList

多对多查询

用户表和角色表的关系为,一个用户有多个角色,一个角色被多个用户使用

多对多查询的需求:查询用户同时查询出该用户的所有角色

对应的sql语句为

  • SELECT r.*,u.id u_id,u.userName,u.birthday,u.sex FROM role r
  • INNER JOIN role_user ru ON r.id=ru.roleId
  • INNER JOIN user u ON u.id=ru.userId

创建实体类时应注意

  • List roleList;
  • List userList;

现多对多关系查询的主要工作都放在了这里,首先通过resultMap 声明用户类的结果映射,id以及result等标签就是User类中的基本属性,User类中的角色属性roles通过collection集合标签来映射到结果集中,,property对应User类中声明的roles属性,ofType用于标识集合中元素的类型,resultMap用于引用其他的结果映射来说明集合中元素的属性,在这里为roleMap。如果roleMap不在其他地方使用,也可以直接将角色的属性直接配置在collection属性的子集里

小结:MyBatis多表配置方式:

一对一配置:使用做配置

一对多配置:使用+做配置

多对多配置:使用+做配置

猜你喜欢

转载自blog.csdn.net/GodfatherTye/article/details/109363967