mybatis高级映射(一对一,一对多)
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高级映射(一对一,一对多)的更多相关文章
- 【Mybatis高级映射】一对一映射、一对多映射、多对多映射
前言 当我们学习heribnate的时候,也就是SSH框架的网上商城的时候,我们就学习过它对应的高级映射,一对一映射,一对多映射,多对多映射.对于SSM的Mybatis来说,肯定也是差不多的.既然开了 ...
- mybatis 高级映射和spring整合之高级映射(4)
mybatis 高级映射和spring整合之高级映射 ----------------学习结构-------------------- 0.0 对订单商品数据模型进行分析 1.0 高级映射 1.1 一 ...
- mybatis 高级映射和spring整合之逆向工程(7)
mybatis 高级映射和spring整合之逆向工程(7) 4.0 逆向工程 4.1 mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行 ...
- mybatis 高级映射和spring整合之与Spring整合(6)
mybatis 高级映射和spring整合之mybatis与Spring整合 3.0 mybatis和spring整合(掌握) 3.1 整合思路 需求spring通过单例方式管理SqlSessionF ...
- mybatis 高级映射和spring整合之查询缓存(5)
mybatis 高级映射和spring整合之查询缓存(5) 2.0 查询缓存 2.0.1 什么是查询缓存 mybatis提供缓存,用于减轻数据压力,提高数据库性能. mybatis提供一级缓存和二级缓 ...
- mybatis入门基础(六)----高级映射(一对一,一对多,多对多)
一:订单商品数据模型 1.数据库执行脚本 创建数据库表代码: CREATE TABLE items ( id INT NOT NULL AUTO_INCREMENT, itemsname ) NOT ...
- 六 mybatis高级映射(一对一,一对多,多对多)
1 订单商品数据模型 以订单商品数据为模型,来对mybaits高级关系映射进行学习.
- 【mybatis深度历险系列】mybatis中的高级映射一对一、一对多、多对多
学习hibernate的时候,小编已经接触多各种映射,mybatis中映射有到底是如何运转的,今天这篇博文,小编主要来简单的介绍一下mybatis中的高级映射,包括一对一.一对多.多对多,希望多有需要 ...
- Mybatis学习总结(六)——高级映射(一对一,一对多,多对多)
一.订单商品数据模型 1.数据库执行脚本 创建数据库表代码: /*Table structure for table `t_user` */ CREATE TABLE t_user ( id INT ...
随机推荐
- Reminders在电商推荐中的价值
原论文在UMAP'16.文章并没有太高深的模型,比较接地气:但其观点与结论很独到,并且在工业界具有很强的实际操作价值. 针对推荐系统的研究大多关注在挖掘用户并不知道但是却与其兴趣相关的物品.不过每个推 ...
- 分布式服务Dubbo+Zookeeper安全认证
前言 由于之前的服务都是在内网,Zookeeper集群配置都是走的内网IP,外网不开放相关端口.最近由于业务升级,购置了阿里云的服务,需要对外开放Zookeeper服务. 问题 Zookeeper+d ...
- C++ IO操作API及注意事项(包含一个日志类的实现)
C++是一个抽象程度比C高很多的语言,在使用C++时,编译器做了很多工作,如果我们不对C++的某些特性的实现机制进行了解,那么编程时也许会有很多疑惑,我们也许知道怎样做才是正确的,但不知道为什么要这样 ...
- Python Django CMDB项目实战之-1如何开启一个Django-并设置base页、index页、文章页面
1.环境 win10 python 2.7.14 django 1.8.2 需要用到的依赖包:MySQLdb(数据库的接口包).PIL/pillow(处理图片的包) 安装命令: pip install ...
- vim配置分享(持续更新中)
作者:zhanhailiang 日期:2014-10-24 set nocompatible set nu "" 自己主动缩进 syntax on set autoindent ...
- vue-router实例
最近刚刚用vue写了个公司项目,使用vue-cli构建的,算是中大型项目吧,然后这里想记录并且分享一下其中的知识点,希望对大家有帮助,后期会逐渐分享:话不多说,直接上代码!! main.js // T ...
- OpenTK教程-0序言
记得很久之前,我写过一个基于.NET的3D开发框架/工具比较.当时选定的技术是WPF.但是随着项目发展,需要处理的图形数量越来越多,基于WPF的处理起来性能有问题,最后还是使用了基于OpenTK的解决 ...
- BMC手册 — 第一模块 BMC介绍
BMC的监控 其实是BPPM与 Patrol 产品的结合.早期它们二个是单独监控产品,后来BPPM被BMC收购.拿来与patrol产口集成产品整合后,BPPM主要用来做展示与告警处理,底层采集采用pa ...
- mybatis插入实体到数据库后获取自增的主键
话不多说,直接说方法. 1.在insert语句中加入如下的代码. <insert id="insertSelective" parameterType="com.q ...
- 用maven建立java web项目
1.在eclipse的菜单栏选择File->New->Other->Maven->Maven ,并在第一个框打勾,然后点击下一步 2.转换为java的Dynamic Web P ...