## 一对一
### 第一种写个扩展类
![](https://img.kancloud.cn/43/54/43548e2052628ecff2e6009b2f5f3ba3_291x119.png)
![](https://img.kancloud.cn/c8/4b/c84ba70fb5cba5eb245a97f854a6943d_306x154.png)
![](https://img.kancloud.cn/52/5e/525edce140482dcdfdbb615340f97503_527x204.png)
~~~
<mapper namespace="com.gyf.mapper.OrdersMapper">
<select id="findOrderById" parameterType="int" resultType="ordersExt">
SELECT o.*,u.username,u.address FROM orders o,user u
WHERE o.user_id=u.id AND o.id = #{id}
</select>
</mapper>
~~~
### 第二种写法
![](https://img.kancloud.cn/e7/b3/e7b3d7d68f8a072217795aca87ff8e54_456x226.png)
~~~
<resultMap id="orderRelMap" type="orders">
<id column="id" property="id"></id>
<id column="note" property="note"></id>
<id column="number" property="number"></id>
<id column="createtime" property="createtime"></id>
<association property="user" javaType="user">
<id column="user_id" property="id"></id>
<id column="username" property="username"></id>
<id column="address" property="address"></id>
</association>
</resultMap>
<select id="findOrderBysId" parameterType="int" resultMap="orderRelMap">
SELECT o.*,u.username,u.address FROM orders o,user u
WHERE o.user_id=u.id AND o.id = #{id}
</select>
~~~
![](https://img.kancloud.cn/71/4f/714f7c9343eb0df2a7df13b1db062baa_976x67.png)
## 一对多
![](https://img.kancloud.cn/86/02/8602d56feebc499b22e8173de950a53c_500x57.png)
~~~
<resultMap id="orderRelMaps" type="orders">
<id column="id" property="id"></id>
<id column="note" property="note"></id>
<id column="number" property="number"></id>
<id column="createtime" property="createtime"></id>
<association property="user" javaType="user">
<id column="user_id" property="id"></id>
<id column="username" property="username"></id>
<id column="address" property="address"></id>
</association>
<collection property="orderDetailLists" ofType="orderDetail">
<id column="detail_id" property="id"></id>
<id column="items_id" property="itemsId"></id>
<id column="items_num" property="itemsNum"></id>
</collection>
</resultMap>
<select id="findOrderListById" parameterType="int" resultMap="orderRelMaps">
SELECT o.*,u.username,u.address,od.id detail_id,od.items_id,od.items_num
FROM orders o,user u,orderdetail od
WHERE
o.user_id=u.id
AND o.id = od.orders_id
AND o.id = #{id}
</select>
~~~
![](https://img.kancloud.cn/ab/b4/abb40f97d1914ea81bc6fb12c1087946_1057x113.png)
## 多对多
~~~
<resultMap id="userRulMap" type="user">
<id column="id" property="id"></id>
<result column="username" property="username"></result>
<result column="address" property="address"></result>
<collection property="ordersList" ofType="orders">
<id column="order_id" property="id"></id>
<result column="number" property="number"></result>
<result column="createtime" property="createtime"></result>
<result column="note" property="note"></result>
<collection property="orderDetailLists" ofType="OrderDetail">
<id property="id" column="detail_id"></id>
<result property="itemsId" column="items_id"></result>
<result property="itemsNum" column="items_id"></result>
<collection property="items" ofType="items">
<id property="name" column="name"></id>
<result property="price" column="price"></result>
<result property="detail" column="detail"></result>
</collection>
</collection>
</collection>
</resultMap>
<select id="findUserOrderInfo" resultMap="userRulMap">
SELECT
u.id,
u.username,
u.address,
o.id order_id,
o.number,
o.createtime,
o.note,
od.id detail_id,
od.items_id,
od.items_num,
it.name,
it.price,
it.detail
FROM
user u,
orders o,
orderdetail od,
items it
WHERE
o.user_id = u.id
AND o.id = od.orders_id
AND od.items_id = it.id;
</select>
~~~
~~~
@Test
public void test1() throws IOException {
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
List<User> users= userMapper.findUserOrderInfo();
for (User user:users) {
System.out.println(user);
for (Orders orders:user.getOrdersList()){
System.out.println("order"+orders);
for (OrderDetail orderDetail:orders.getOrderDetailLists()){
System.out.println("orderDetail"+orderDetail);
for (Items itemss:orderDetail.getItems()){
System.out.println("详情"+itemss);
}
}
}
}
~~~
```
User [id=1, username=王五, sex=null, birthday=null, address=null]
orderOrders{id=3, user_id=null, note='null', createtime=Wed Feb 04 13:22:35 CST 2015, number='1000010'}
orderDetailOrderDetail{id=1, itemsId=1, itemsNum=1}
详情Items{id=null, name='台式机', price=3000, detail='该电脑质量非常好!!!!', pic='null', createtime=null}
orderDetailOrderDetail{id=2, itemsId=2, itemsNum=2}
详情Items{id=null, name='笔记本', price=6000, detail='笔记本性能好,质量好!!!!!', pic='null', createtime=null}
orderOrders{id=4, user_id=null, note='null', createtime=Tue Feb 03 13:22:41 CST 2015, number='1000011'}
orderDetailOrderDetail{id=4, itemsId=2, itemsNum=2}
详情Items{id=null, name='笔记本', price=6000, detail='笔记本性能好,质量好!!!!!', pic='null', createtime=null}
orderDetailOrderDetail{id=3, itemsId=3, itemsNum=3}
详情Items{id=null, name='背包', price=200, detail='名牌背包,容量大质量好!!!!', pic='null', createtime=null}
User [id=33, username=zhansga, sex=null, birthday=null, address=lisi]
orderOrders{id=6, user_id=null, note='null', createtime=Wed Oct 20 15:58:37 CST 2021, number='1000012'}
orderDetailOrderDetail{id=5, itemsId=2, itemsNum=2}
详情Items{id=null, name='笔记本', price=6000, detail='笔记本性能好,质量好!!!!!', pic='null', createtime=null}
DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@313b2ea6]
DEBUG [main] - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@313b2ea6]
DEBUG [main] - Returned connection 825962150 to pool.
```
- 面试
- php
- laravel
- 安装
- 创建数据
- 创建控制器
- 错误
- 权限认证
- 图形验证码
- 管理员
- 无限分类
- 视频播放
- 推流
- pc页面
- thinkphp5
- 表单提交安全验证
- crontab
- 获取下级所有数据
- 过滤敏感词
- 二维码
- 邀请码
- jwt token
- 笛卡尔
- 高并发解决优化
- 设置多语言
- 计算经纬度两点距离
- 分片上传
- centos swoole
- 查看swoole版本
- centos 安装 redis
- 把整数随机分成n份或者红包
- 生成随机字符串
- 获取上级
- 宝塔搭建nginx推拉流
- 生成二维码海报
- 二维数组去重
- 经纬度 ---边距 和判断是不是范围内
- workerman
- 扩展
- redis
- mysql
- mysql 主从复制
- 定位问题语句
- 列的选择规则
- Enum介绍
- 索引介绍
- 延迟关联
- in 查询陷阱
- limit 优化
- 事务
- 读写分离
- mysql 权限错误
- mysql计算距离
- mysql数据导出导入
- 索引失效
- mysql 语句技巧
- linux
- 配置nginx 高可用
- Nginx内核参数优化
- 配置优化
- nginx-keepalived实现高可用负载
- lvs+keepalived
- centos5关闭防火墙
- nginx操作
- linux操作
- mysql 安装
- php
- 安装phpadmin
- php7安装mongodb
- 查看php位置
- 查找开启的进程端口
- 守护进程
- centos安装php7.2
- centos 错误解决
- 安装php7错误
- mysql 错误
- 支付宝支付
- html
- js 倒计时
- go vscode 配置
- go util
- 获取两个数之间随机数
- java
- lambda
- 随机抽取
- lombok
- springboot
- 常见注解
- 接受参数常用注解
- 文件上传
- 上传错误日志拦截
- 拦截器
- 定时任务
- mybatis
- 关联查询
- 全局配置
- 缓存
- git
- 微信相关
- 体现到零钱
- 服务商转账
- 公众号小程序相关
- 小程序二维码
- svn
- layui