两表关系:

1.Mybatis中一对一关系

     <!-- 两表联查,通过相同属性user_id
left join 表示以左边的表为主表
-->
<select id="findOrdersByUser" parameterType="User" resultMap="orders_user">
select
o.id,
o.number,
o.createtime,
o.user_id,
u.username,
u.address
from orders o
left join user u
on o.user_id = u.id
</select>

一对一查询的sql代码,这里采用的是resultMap方式查询,即在Orders类中定义一对一的User对象 private User user;

     <!-- (均采用别名方式)
type:返回类型,同时也是主要依照的表
注意:在一对一关联中不能省略属性
association:一对一标签
property:在Orders类中对应User的属性名,Orders与type中的类型需一致
javaType:该一对一关系,对应的pojo类 -->
<resultMap type="Orders" id="orders_user">
<id column="id" property="id"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
<result column="user_id" property="userId"/> <association property="user" javaType="User">
<id column="user_id" property="id"/>
<result column="username" property="username"/>
<result column="address" property="address"/>
</association>
</resultMap>

注意:id标签表示唯一性,一般是选取该表的id字段,当出现一对一、一对多关系时涉及2个id,那么可以选取表中(能访问的任意属性)能够表示该表唯一性的属性放在id标签中,上面代码此时order表中user_id字段与user表中id一致,故可以作为唯一性标志,若只能找到该表的id为唯一性属性,同时另一张表中已采用id为唯一标签,此时可以对id进行别名区别。别名操作在sql语句中执行。

2.Mybatis中一对多关系

一对多关系与一对一相似,主要在标签方面有些区别

     <!-- 此次将user表作为主表,主表中不可能出现重复id -->
<select id="findUserByOrders" parameterType="Orders" resultMap="user_orders">
select
o.id,
o.number,
o.createtime,
u.id uid,
u.username,
u.address
from user u
left join orders o
on o.user_id = u.id
</select>
     <resultMap type="User" id="user_orders">
<id column="uid" property="id"/>
<result column="username" property="username"/>
<result column="address" property="address"/> <!-- 一对多中不能简单地将javaType赋为Orders类型
此时Mybatis不能自动区别是否为集合属性,此时须通过ofType设置属性类型
-->
<collection property="order" ofType="Orders">
<id column="id" property="id"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
</collection>
</resultMap>

最新文章

  1. docker命令小记
  2. CentOS7 Mini安装Oracle(图形化安装)
  3. HDU 4822 Tri-war(LCA树上倍增)(2013 Asia Regional Changchun)
  4. 微信支付开发若干问题总结,API搞死人(谢谢ζั͡ޓއއއ๓http://www.thinkphp.cn/code/1620.html)血淋淋的教训,第二次栽这里了
  5. javascript代码复用模式
  6. 在SQL 2012中使用和Oracle 一样的序列
  7. Unity3D之资源问题处理
  8. 使用powershell监控命令行console程序并在停止时启动
  9. 当引用了Properties.Settings后,如果执行的时候,出现&quot;配置系统无法初始化&quot; 或者 某某节点不正确
  10. *CCF 201612-2 工资计算(80)
  11. Edison与Arduino通过USB对接通信
  12. Linux开机启动图片修改
  13. Gym101889J. Jumping frog(合数分解+环形dp预处理)
  14. Tools - 电子书
  15. 【学习总结】Git学习-参考廖雪峰老师教程五-远程仓库
  16. 通过T-SQL语句实现数据库加解密功能
  17. Spring注解方式配置Redis
  18. linux下打包压缩和解压命令
  19. 小白学Docker之基础篇
  20. Linux 安装 mysql 转 http://www.cnblogs.com/fnlingnzb-learner/p/5830622.html

热门文章

  1. 达人篇:6.3)试验设计DOE,Design of Experiments
  2. xshell本地上传文件至服务器
  3. 一段自用javascript代码
  4. Redis(1):入门
  5. C语言20150620
  6. Thread中断线程的方法
  7. CADisplayLink+弹簧动画实现果冻效果
  8. laravel5.4学习--laravel目录结构
  9. shell获取时间的相关命令
  10. 使用PowerShell创建SSAS Role