您的位置:首页 > 其它

mybatis 详解(七)------一对一、一对多、多对多

2017-08-29 21:22 411 查看
前面几篇博客我们用mybatis能对单表进行增删改查操作了,也能用动态SQL书写比较复杂的sql语句。但是在实际开发中,我们做项目不可能只是单表操作,往往会涉及到多张表之间的关联操作。那么我们如何用 mybatis 处理多表之间的关联操作呢?请看本篇博客详解。

  本篇详细代码:http://pan.baidu.com/s/1eSzmst8 密码:3n3o

1、一对一

  我们以用户表 user 和订单表 orders 为例。设定一个订单只能由一个 用户创建,那么由订单到用户就是一对一的关系。

①、创建用户表 user 和订单表 orders

  用户表 user

  


  订单表 orders

  


②、创建项目工程,导入相应的 jar 包

  


③、创建实体类

  



  User.java

  Orders.java

  

④、创建 OrderMapper 接口和 OrderMapper.xml 文件

  



  由于我们采用 Mapper 代理加载 xxxMapper.xml 文件,这里我们重复一下 Mapper 代理所需的条件,接口和xml文件必须满足以下几个条件:

  1、接口必须要和 xml 文件同名且在同一个包下,也就是说 xml 文件中的namespace是接口的全类名  

  2、接口中的方法名和xml 文件中定义的 id 一致

  3、接口输入参数类型要和xml 中定义的 parameterType 一致

  4、接口返回数据类型要和xml 中定义的 resultType 一致

  详细介绍参考上一篇博客:http://www.cnblogs.com/ysocean/p/7301548.html

  OrderMapper 接口

  

  OrderMapper .xml文件

  

⑤、向 mybatis-configuration.xml 配置文件中注册 OrderMapper.xml 文件

  

⑥、测试

  

2、一对多

  还是以用户表 user 和 订单表 orders 为例,一个用户能创建多个订单。故用户和订单构成一对多的关联。

  我们在 user.java 中添加一个属性 public List<Orders> orders;

①、创建实体类

  user.java如下,orders.java保持不变

  

②、创建 UserMapper 接口和 [b]UserMapper.xml 文件[/b]

  



  UserMapper接口

  UserMapper.xml

  

③、向 mybatis-configuration.xml 配置文件中注册 UserMapper.xml 文件

  



、测试

  

3、多对多

  这里我们以用户 user 表和 角色role 表为例,假定一个用户能被分配成多重角色,而一种角色也能分给多个用户,故用户和角色构成多对多的关系。

  需求:给定角色id,查询这个角色所属的所有用户信息

①、在数据库中建立相应的表

  user 表和上面的保持不变

  role 表

  


  两者之间的关联表user_role

  


②、建立对应的实体类

  User.java

  



  Role.java

  User_Role.java

  

、创建 UserMapper 接口和 [b]UserMapper.xml 文件[/b]

  UserMapper 接口

  UserMapper.xml

  

④、向 mybatis-configuration.xml 配置文件中注册 UserMapper.xml 文件

  


⑤、测试

  多对多主要是关联关系要找好,然后根据关联去查询。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: