mybatis 实现一对一关联表查询
来源:互联网 发布:淘宝颜真卿钢笔字帖 编辑:程序博客网 时间:2024/05/16 09:50
1 一对一查询
1 一对一查询
1.1 需求
查询订单信息,关联查询创建订单的用户信息
1.2 resultType
1.2.1 sql语句
确定查询的主表:订单表
确定查询的关联表:用户表
关联查询使用内链接?还是外链接?
由于orders表中有一个外键(user_id),通过外键关联查询用户表只能查询出一条记录,可以使用内链接。关联查询,orders.* ,USER.username , USER.sex , USER.address为关联查询的列,Orders , USER 为关联的表,orders.user_id= user.id为关联查询的条件(注意条件中的 , 号)
SELECT
orders.* ,
USER.username ,
USER.sex ,
USER.address
FROM
Orders ,
USER
WHERE orders.user_id = user.id
1.2.2 创建pojo
将上边sql查询的结果映射到pojo中,pojo中必须包括所有查询列名。
原始的Orders.java不能映射全部字段,需要新创建的pojo。
创建 一个pojo继承包括查询字段较多的po类。
//通过此类映射订单和用户传查询的结果,让此类继承包括字段较多的POJO类
publicclassOrdersCustom extends Orders{
//添加用户属性
/*USER.username,
USER.sex,
USER.address */
private Stringusername;
private Stringsex;
private Stringaddress;
1.2.3 mapper.xml
<!-- 查询订单关联查询用户信息 -->
<selectid="findOrdersUser"resultType="OrdersCustom">
SELECTorders.* ,
user.username,user.sex, user.address FROM orders ,USER
WHERE
orders.user_id=user.id
</select>
1.2.4 mapper.java
//查询订单关联查询用户信息
publicList<OrdersCustom> findOrdersUser()throws Exception;
1.3 resultMap
1.3.1 使用resultMap映射的思路
使用resultMap将查询结果中的订单信息映射到Orders对象中,在orders类中添加User属性,将关联查询出来的用户信息映射到orders对象中的user属性中。
1.3.2 需要Orders类中添加user属性关联user表
publicclassOrders {
privateIntegerid;
privateIntegeruserId;
privateStringnumber;
privateDatecreatetime;
privateStringnote;
//用户信息
private Useruser;
1.3.3 mapper.xml
1.3.3.1 定义resultMap一对一关联查询用association 的类型为javatype定义的类型。 column为sql语句中的字段,property 为你需要映射的字段
<!-- 订单查询关联用户的resultMap
将整个查询的结果映射到cn.itcast.mybatis.po.Orders中
-->
<resultMaptype="cn.itcast.mybatis.po.Orders"id="OrdersUserResultMap">
<!--配置映射的订单信息 -->
<!-- id:指定查询列中的唯一标识,订单信息的中的唯一标识,如果有多个列组成唯一标识,配置多个id
column:订单信息的唯一标识列
property:订单信息的唯一标识列所映射到Orders中哪个属性
-->
<idcolumn="id"property="id"/>
<resultcolumn="user_id"property="userId"/>
<resultcolumn="number"property="number"/>
<resultcolumn="createtime"property="createtime"/>
<resultcolumn="note"property=note/>
<!--配置映射的关联的用户信息 -->
<!-- association:用于映射关联查询单个对象的信息
property:要将关联查询的用户信息映射到Orders中哪个属性
-->
<associationproperty="user" javaType="cn.itcast.mybatis.po.User">
<!-- id:关联查询用户的唯一标识
column:指定唯一标识用户信息的列
javaType:映射到user的哪个属性
-->
<idcolumn="user_id"property="id"/>
<resultcolumn="username"property="username"/>
<resultcolumn="sex"property="sex"/>
<resultcolumn="address"property="address"/>
</association>
</resultMap>
1.3.3.2 statement定义还是关联查询此处要注意ResultMap的返回类型名称要和定义的ResultMap id 一致
<!-- 查询订单关联查询用户信息 -->
<selectid="findOrdersUserResultMap"resultMap="OrdersUserResuletMap">
SELECTorders.* ,
user.username,user.sex, user.address FROM orders ,USER
WHERE
orders.user_id=user.id
</select>
1.3.4 mapper.java
//查询订单关联查询用户使用resultMap
public List<Orders> findOrdersUserResultMap()throws Exception;
测试略
摘自传智博客燕青老师的视频- mybatis 实现一对一关联表查询
- Mybatis实现关联表查询(一对一关联)
- Mybatis---一对一关联表查询
- MyBatis一对一关联表查询
- MyBatis关联查询(一对一)
- mybatis一对一关联查询
- Mybatis一对一关联查询
- Mybatis一对一关联查询
- Mybatis一对一关联查询
- MyBatis-一对一关联表查询 -05
- MyBatis实现关联表查询(一对一,一对多,联合查询,嵌套查询)
- 【Mybatis学习总结四】实现关联表查询----一对一关联(association)
- Mybatis入门--关联查询一对一
- MyBatis中一对一关联查询
- MyBatis之一对一关联查询
- Mybatis关联查询一对一和一对多的实现
- Mybatis关联查询一对一和一对多的实现
- Mybatis关联查询一对一和一对多的实现
- 图片无限轮播-最简单的实现方法
- Android 四大组件学习之ContentProvider四
- jstl el 表达式详解
- SQL注入与防范
- ubuntu 删除内核文件
- mybatis 实现一对一关联表查询
- 移动端WEB开发,click,touch,tap事件浅析
- 集合框架
- 30分钟玩转Docker系列课程1---初识Docker
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第43讲:PHP程序设计中的MVC模式
- C 常用文件操作函数
- Android实战简易教程-第二十六枪(基于ViewPager实现微信页面切换效果)
- JSP用户登录(JavaBean操作sql server数据库) (tomcat服务器)
- 谷歌员工自曝工资 硅谷禁忌被打破