一对一查询
一对一查询的模型
用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户
一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户

一对一查询的语句
对应的sql语句:select * from orders o,user u where o.uid=u.id;
查询的结果如下:
创建Order和User实体
1 | public class Order { |
1 | public class User { |
创建OrderMapper接口
1 | public interface OrderMapper { |
配置OrderMapper.xml
1 | <mapper namespace="com.lagou.mapper.OrderMapper"> |
其中还可以配置如下:
1 | <resultMap id="orderMap" type="com.lagou.domain.Order"> |
测试结果
1 | OrderMapper mapper = sqlSession.getMapper(OrderMapper.class); |

一对多查询
一对多查询的模型
用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户
一对多查询的需求:查询一个用户,与此同时查询出该用户具有的订单
一对多查询的语句
对应的sql语句:select *,o.id oid from user u left join orders o on u.id=o.uid;
查询的结果如下:
修改User实体
1 | public class Order { |
创建UserMapper接口
1 | public interface UserMapper { |
配置UserMapper.xml
1 | <mapper namespace="com.lagou.mapper.UserMapper"> |
测试结果
1 | UserMapper mapper = sqlSession.getMapper(UserMapper.class); |

多对多查询
多对多查询的模型
用户表和角色表的关系为,一个用户有多个角色,一个角色被多个用户使用
多对多查询的需求:查询用户同时查询出该用户的所有角色
多对多查询的语句
对应的sql语句:select u.,r.,r.id rid from user u left join user_role ur on u.id=ur.user_id inner join role r on ur.role_id=r.id;
查询的结果如下:
创建Role实体,修改User实体
1 | public class User { |
添加UserMapper接口方法
1 | List<User> findAllUserAndRole(); |
配置UserMapper.xml
1 | <mapper namespace="com.lagou.mapper.UserMapper"> |
测试结果
1 | UserMapper mapper = sqlSession.getMapper(UserMapper.class); |

知识小结
MyBatis多表配置方式:
- 一对一配置:使用做配置
- 一对多配置:使用+做配置
- 多对多配置:使用+做配置