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 ...
随机推荐
- Python的集合
1. Python的集合 1.1 集合的定义 在Python中, 集合set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.Python中的集合set类 ...
- Linux 开启echo等服务
第一步: 需要安装xinetd服务(其实daytime就包含在xinetd服务中),安装就直接在"新立得软件管理器"里搜索,安装. sudo apt-get install xin ...
- Django中多表查询思路
需求: 1.有一张文章表和一张评论表 2.两张表的关系是一对多 3.规则:若是有新评论,则将对应的文章置顶,若是有新文章则将新文章置顶. 思路: 在文章表中增加一个最后评论时间的字段.然后采用分组排序 ...
- C++map类型 之 简单介绍
一:map的前世今生 (1)从关联容器与顺序容器说起.关联容器通过键(key)存储和读取元素.而顺序容器则通过元素在容器中的位置顺序存储和訪问元素(vector,queue,stack,list等). ...
- Linux Centos安装及卸载Apache
一.卸载 1.查看有没有安装apache,出现下面信息则安装过 [root@localhost ~]# rpm -qa|grep httpd httpd-2.2.15-53.el6.centos.x8 ...
- Linux useradd
在 linux 中,如果我们想添加一个用户,那么使用的命令如下: useradd [ 用户名 ] 实例如下: 那么添加密码如下: passwd [ 用户名 ] 实例如下: 然后输入密码,学过一点 ...
- Struts的使用
一.Struts2的获取 Struts的官方网站为:http://struts.apache.org/ 下载完Struts2的jar包,解压,Struts2资源包的目录结构如下图: apps目录下包含 ...
- MySQL学习(二)复制
复制解决的问题是保持多个服务器之间的数据的一致性,就如同通过复制保持两个文件的一致性一样,只不过MySQL的复制要相对要复杂一些,其基本过程如下: 1)在主库上将数据更改记录到二进制日 ...
- web前端优化整理(转)
如今浏览器能够实现的特性越来越多,并且网络逐渐向移动设备转移,使我们的前端代码更加紧凑,如何优化,就变得越来越重要了. 开发人员普遍会将他们的代码习惯优先于用户体验.但是很多很小的改变可以让用户体验有 ...
- 每周.NET前沿技术文章摘要(2017-05-17)
汇总国外.NET社区相关文章,覆盖.NET ,ASP.NET等内容: .NET .NET Framework 4.7正式发布 链接: http://www.infoq.com/cn/news/2017 ...