mybatis高级映射

一对一关联映射

需求:查询订单信息,关联查询用户信息(一个订单对应一个用户)

(1)通过resultType实现

sql语句:

select
orders.* ,
USER.username,
USER. sex ,
USER.address
FROM orders , USER
WHERE orders.userid = USER .id

创建pojo类

由于orders.java不能全部映射字段,所以要新建pojo

创建一个pojo继承包括查询字段较多的·一个po类

OrdersCustom.java (订单扩展类)

//订单扩展类
public class OrdersCustom extends Orders{
//添加用户属性
private String username;
private String sex;
private String address;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
} }

mapper.xml文件

<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.mapper.OrdersMapperCustom">
<select id="findOrdersUser" parameterType="" resultType="cn.po.OrdersCustom">
select
orders.* ,
USER.username,
USER. sex ,
USER.address
FROM orders , USER
WHERE orders.userid = USER .id
</select>
</mapper>

(2)resultMap实现

sql语句

select
orders.* ,
USER.username,
USER. sex ,
USER.address
FROM orders , USER
WHERE orders.userid = USER .id

 在orders类中添加user

//用户信息
private User user;

生成get ,set 方法

mapper.xml

	<!-- 定义订单查询关联用户resultMap
将整合查询结果映射到cn.po.Orders-->
<resultMap type="cn.po.Orders" id="OrdersUserResultMap">
<!-- 映射订单信息,非关联 -->
<!-- id唯一标识,如果有多个配置多个id -->
<id column="id" property="id"></id>
<result column=user_id" property="userid"></result>
<result column=number" property="number"></result>
<result column=createtime" property="createtime"></result>
<result column="note" property="note"></result>
<!-- 配置映射的关联用户信息 -->
<!-- association用于映射关联查询单个对象的信息
property 要将关联查询的用户信息映射到Orders的那个属性
-->
<association property="user" javaType="cn.po.User">
<!-- id关联用户的唯一标识
colimn 指定唯一标识用户列
javaType映射到user的那个属性
-->
<id column="user_id" property="id"/>
<result column="username" property="username"/>
<result column="sex" property="sex"/>
<result column="address" property="address"/>
</association>
</resultMap>
<select id="findOrdersUser" parameterType="" resultMap="OrdersUserResultMap">
select
orders.* ,
USER.username,
USER. sex ,
USER.address
FROM orders , USER
WHERE orders.userid = USER .id
</select>

一对多关联映射

需求:查询订单及订单明细(一个订单里有多个商品明细)

sql语句

select
orders.* ,
orderdetail.id orderdetail_id,
orderdetail.items_id,
orderdetail.items_num,
orderdetail.orders_id
FROM orders ,orderdetail
WHERE orderdetail.orders_id = orders.id

在Orders类中添加订单明细(orderdetail.java)的list集合

//订单明细
private List<Orderdetail> orderdetail;

mapper.xml

<resultMap type="cn.po.Orders" id="OrdersOrderdetailResultMap">
<!-- 映射订单信息,非关联 -->
<!-- id唯一标识,如果有多个配置多个id -->
<id column="id" property="id"></id>
<result column=user_id" property="userid"></result>
<result column=number" property="number"></result>
<result column=createtime" property="createtime"></result>
<result column="note" property="note"></result>
<!-- 配置映射的关联用户信息 -->
<!-- collection用于映射关联查询多个记录映射到集合当中
property 要将关联查询的用户信息映射到Orders的那个属性
ofType指定映射到集合属性中类型
-->
<collection property="orderdetail" ofType="cn.po.Orderdetail">
<id column="orderdetail_id" property="id"></id>
<result column="items_id" property="itemsid"></result>
<result column="items_num" property="itemsnum"></result>
<result column="orders_id" property="ordersid"></result>
</collection>
</resultMap>
<select id="findOrdersUser" parameterType="" resultMap="OrdersOrderdetailResultMap">
select
orders.* ,
orderdetail.id orderdetail_id,
orderdetail.items_id,
orderdetail.items_num,
orderdetail.orders_id
FROM orders ,orderdetail
WHERE orderdetail.orders_id = orders.id
</select>

mybatis高级映射(一对一,一对多)的更多相关文章

  1. 【Mybatis高级映射】一对一映射、一对多映射、多对多映射

    前言 当我们学习heribnate的时候,也就是SSH框架的网上商城的时候,我们就学习过它对应的高级映射,一对一映射,一对多映射,多对多映射.对于SSM的Mybatis来说,肯定也是差不多的.既然开了 ...

  2. mybatis 高级映射和spring整合之高级映射(4)

    mybatis 高级映射和spring整合之高级映射 ----------------学习结构-------------------- 0.0 对订单商品数据模型进行分析 1.0 高级映射 1.1 一 ...

  3. mybatis 高级映射和spring整合之逆向工程(7)

    mybatis 高级映射和spring整合之逆向工程(7) 4.0 逆向工程 4.1 mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行 ...

  4. mybatis 高级映射和spring整合之与Spring整合(6)

    mybatis 高级映射和spring整合之mybatis与Spring整合 3.0 mybatis和spring整合(掌握) 3.1 整合思路 需求spring通过单例方式管理SqlSessionF ...

  5. mybatis 高级映射和spring整合之查询缓存(5)

    mybatis 高级映射和spring整合之查询缓存(5) 2.0 查询缓存 2.0.1 什么是查询缓存 mybatis提供缓存,用于减轻数据压力,提高数据库性能. mybatis提供一级缓存和二级缓 ...

  6. mybatis入门基础(六)----高级映射(一对一,一对多,多对多)

    一:订单商品数据模型 1.数据库执行脚本 创建数据库表代码: CREATE TABLE items ( id INT NOT NULL AUTO_INCREMENT, itemsname ) NOT ...

  7. 六 mybatis高级映射(一对一,一对多,多对多)

    1  订单商品数据模型 以订单商品数据为模型,来对mybaits高级关系映射进行学习.

  8. 【mybatis深度历险系列】mybatis中的高级映射一对一、一对多、多对多

    学习hibernate的时候,小编已经接触多各种映射,mybatis中映射有到底是如何运转的,今天这篇博文,小编主要来简单的介绍一下mybatis中的高级映射,包括一对一.一对多.多对多,希望多有需要 ...

  9. Mybatis学习总结(六)——高级映射(一对一,一对多,多对多)

    一.订单商品数据模型 1.数据库执行脚本 创建数据库表代码: /*Table structure for table `t_user` */ CREATE TABLE t_user ( id INT ...

随机推荐

  1. python的简介及入门

    前言 为何使用Python Python 是一种效率极高的语言.与其他众多的语言相比,实现相同功能,使用Python编写的程序包含的代码更少.Python的语法简单,易上手,使用Python编写的代码 ...

  2. object 覆盖 div 在IE 和Firefox 的解决方案

    问题描述 公司产品需要在三维(3D)控件上显示弹框,按钮等,然而三维控件的object覆盖了div,弹框和按钮不能显示 firefox 解决方案 最外层div的背景使用不透明背景色,必须是不透明的哦 ...

  3. 《跟我学IDEA》二、配置maven、git、tomcat

    上一篇博文我们讲解了如何去下载并安装一个idea,在这里我们推荐的是zip的解压版,另外我们配置的一些编码和默认的jdk等.今天我们来学习配置maven.git.tomcat等.还是那句话,工欲善其事 ...

  4. 自己动手写http服务器——线程池(一)

    创建一个线程池,每有一个连接对象就将它添加到工作队列中,线程池中的线程通过竞争来取得任务并执行它(它是通过信号量实现的). //filename threadpool.h #ifndef THREAD ...

  5. NDK开发过程自认为好的一些参考资料

    虽然NDK开发时间很短, 但也接触了一些自认为还不错的资料, 记录下来. 一.首先就说官方文档吧 网上资料好多过时了, 并且有点参差不齐. 所以看官方文档还是很有必要的,我根据我的需求整理了两个的链接 ...

  6. android应用集成google登录

        集成google登录之前需要有一下三点要求,只有具备一下两点要求才能集成google登录:         1,android 运行版本4.0及更新版本         2,android 设 ...

  7. 【LeetCode-面试算法经典-Java实现】【053-Maximum Subarray(最大子数组和)】

    [053-Maximum Subarray(最大子数组和)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Find the contiguous subarray w ...

  8. python模块 - re模块使用演示样例

    http://blog.csdn.net/pipisorry/article/details/46619179 re模块匹配规则见:http://blog.csdn.net/pipisorry/art ...

  9. 关于Oracle处理DDL和DML语句的事务管理

    SQL主要程序设计语言 数据定义语言DDL(Data Definition Language) 如 create.alter.drop, 数据操作语言DML(Data Munipulation Lan ...

  10. More DETAILS! PBR的下一个发展在哪里?

    最近几年图形学社区对PBR的关注非常高,也许是由于Disney以及一些游戏引擎大厂的助推,也许是因为它可以被轻松集成进实时渲染的游戏引擎当中,也许是因为许多人发现现在只需要调几个参数就能实现具有非常精 ...