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多表配置方式:
一对一配置:使用做配置
一对多配置:使用+做配置
多对多配置:使用+做配置