mybatis高级映射(一对一,一对多,多对多)
http://www.cnblogs.com/selene/p/4627446.html
- 博客园
- 首页
- 新随笔
- 联系
- 订阅
- 管理
mybatis入门基础(六)----高级映射(一对一,一对多,多对多)
阅读目录
- 一:订单商品数据模型
- 二、一对一查询
- 三、一对多查询
- 四、多对多查询
一:订单商品数据模型
1.数据库执行脚本
创建数据库表代码:
![](/assets/blank.gif)
测试数据代码:
![](/assets/blank.gif)
2.数据模型分析思路
(1).每张表记录的数据内容:分模块对每张表记录的内容进行熟悉,相当 于你学习系统 需求(功能)的过程;
(2).每张表重要的字段设置:非空字段、外键字段;
(3).数据库级别表与表之间的关系:外键关系;
(4).表与表之间的业务关系:在分析表与表之间的业务关系时一定要建立在某个业务意义基础上去分析。
3.针对订单商品模型的数据库思路分析:
用户表:t_user-->记录了购买商品的用户信息
订单表:orders-->记录了用户所创建的订单(购买商品的订单)
订单明细表:orderdetail-->记录了订单的详细信息即购买商品的信息
商品表:items-->记录了商品信息
表与表之间的业务关系:
在分析表与表之间的业务关系时需要建立 在某个业务意义基础上去分析。
先分析数据级别之间有关系的表之间的业务关系:
t_user和orders:
t_user---->orders:一个用户可以创建多个订单,一对多
orders--->t_user:一个订单只由一个用户创建,一对一
orders和orderdetail:
orders--->orderdetail:一个订单可以包括多个订单明细,因为一个订单可以购买多个商品,每个商品的购买信息在orderdetail记录,一对多关系
orderdetail--> orders:一个订单明细只能包括在一个订单中,一对一
orderdetail和itesm:
orderdetail--->itesms:一个订单明细只对应一个商品信息,一对一
items--> orderdetail:一个商品可以包括在多个订单明细 ,一对多
再分析数据库级别没有关系的表之间是否有业务关系:
orders和items:
orders和items之间可以通过orderdetail表建立 关系。
4.分析之后画出对应的图,方便直观的了解业务关系
二、一对一查询
2.1.需求:查询订单信息,关联查询用户信息;
2.2.resultType实现
2.2.1.sql语句
确定查询的主表:订单表,确定查询的关联表:用户表。
![](/assets/blank.gif)
1 SELECT t1.*, 2 t2.username, 3 t2.sex, 4 t2.address 5 FROM 6 orders t1, 7 t_user t2 8 WHERE t1.user_id=t2.id
![](/assets/blank.gif)
2.2.2.创建entity实体
用户实体:User.java
![](/assets/blank.gif)
package com.mybatis.entity; import java.util.Date; import java.util.List; /** * @ClassName: User* @Description: TODO(用户实体)* @author 阿赫瓦里*/ public class User {private Integer id;// 姓名private String username;// 性别private String sex;// 地址private String address;// 生日private Date birthday;// 用户创建的订单列表private List<Orders> ordersList;// getter and setter ...... }
![](/assets/blank.gif)
订单实体:orders.java
![](/assets/blank.gif)
package com.mybatis.entity; import java.util.Date; import java.util.List; /*** @ClassName: Orders* @Description: TODO(订单实体)* @author 阿赫瓦里*/ public class Orders {/** 主键订单Id */private Integer id;/** 下单用户id */private Integer userid;/** 订单号 */private String number;/** 创建订单时间 */private Date createTime;/** 备注 */private String note;// 用户信息private User user;// 订单明细private List<OrderDetail> orderdetails;// getter and setter ...... }
![](/assets/blank.gif)
商品实体:Items.java
![](/assets/blank.gif)
package com.mybatis.entity; import java.util.Date; /*** @ClassName: Items* @Description: TODO(商品实体类)* @author 阿赫瓦里*/ public class Items {/** 商品表主键Id */private Integer id;/** 商品名称 */private String itemsName;/** 商品定价 */private float price;/** 商品描述 */private String detail;/** 商品图片 */private String picture;/** 生产日期 */private Date createTime; // getter and setter ...... }
![](/assets/blank.gif)
订单明细实体:OrderDetail.java
![](/assets/blank.gif)
package com.mybatis.entity; /*** @ClassName: OrderDetail* @Description: TODO(订单明细实体)* @author 阿赫瓦里*/ public class OrderDetail {/** 主鍵,訂單明细表Id */private Integer id;/** 訂單Id */private Integer ordersId;/** 商品id */private Integer itemsId;/** 商品购买数量 */private Integer itemsNum;// 明细对应的商品信息private Items items;// getter and setter ...... }
![](/assets/blank.gif)
创建一个包装类,将查询到的信息可以全部映射到此类:OrdersCustom.java
![](/assets/blank.gif)
/*** @ClassName: OrdersCustom* @Description: TODO(订单的扩展类,通过此类映射订单和用户的查询结果,让此类继承字段较多的实体类)* @author: 阿赫瓦里*/ public class OrdersCustom extends Orders {// 添加用户的属性private String username;private String sex;private String address;// getter and setter...... }
![](/assets/blank.gif)
2.2.3.创建OrdersCustomMapper.java
![](/assets/blank.gif)
package com.mybatis.Mapper; import java.util.List; import com.mybatis.entity.OrdersCustom;/*** @ClassName: OrdersMapperCustom* @Description: TODO(OrdersMapperCustom的mapper)* @author 阿赫瓦里*/ public interface OrdersCustomMapper {/** 查询订单,关联查询用户信息 */public List<OrdersCustom> findOrdersUser(); }
![](/assets/blank.gif)
2.2.4.创建OrdersCustomMapper.xml和上面对应的接口名称一致,以便通过mapper接口加载配置文件
![](/assets/blank.gif)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace命名空间,作用就是对sql进行分类化的管理,理解为sql隔离注意:使用mapper代理开发时,namespace有特殊作用,namespace等于mapper接口地址--> <mapper namespace="com.mybatis.mapper.OrdersCustomMapper"><!-- 查询订单,关联查询用户信息 --><select id="findOrdersUser" resultType="com.mybatis.entity.OrdersCustom">SELECT t1.*,t2.username,t2.sex,t2.addressFROMorders t1,t_user t2WHERE t1.user_id=t2.id</select> </mapper>
![](/assets/blank.gif)
2.3.resultMap实现
2.3.1. sql语句同上
2.3.2. resultMap映射思路:
使用resultMap将查询结果中的订单信息映射到Orders对象中,在orders类中添加User属性,将关联查询出来的用户信息映射到orders对象中的user属性中(上面orders实体中已经添加)。
2.3.3 ordersCustomMapper.xml
1. 定义resultMap
![](/assets/blank.gif)
1 <!-- 定义查询订单关联用户的 resultMap,将整个的查询结果映射到com.mybatis.entity.Orders中 --> 2 <resultMap type="com.mybatis.entity.Orders" id="OrdersUserResultMap"> 3 <!-- 配置映射的订单信息 --> 4 5 <!-- id:查询列中的唯一标识,订单信息中的唯一标识,如果多列组成唯一标识(如:一般数据库设计中的字典表 使用联合主键),就需要配置多个id 6 column:订单信息的唯一标识 列 7 property:订单信息的唯一标识列所映射到orders中的那个属性(假如:数据库中orders表中的主键为orders_id,而实体属性名称为ordersId, 8 则这个配置应为<id column="orders_id" property="ordersId"/>,类似hibernate实体映射文件配置)。 9 --> 10 <id column="id" property="id"/> 11 <result column="user_id" property="userid"/> 12 <result column="number" property="number"/> 13 <result column="createtime" property="createTime"/> 14 <result column="note" property="note"/> 15 16 <!-- 配置映射的关联用户信息 --> 17 18 <!--association:用于映射关联查询单个对象的信息 19 property:要将关联查询的用户信息映射到Orders中那个属性 20 --> 21 <association property="user" javaType="com.mybatis.entity.User"> 22 <!-- id:关联查询用户的唯一标识 23 column:指定唯一标识用户信息的列 24 property:映射到user的那个属性 25 --> 26 <id column="user_id" property="id"/> 27 <result column="username" property="username"/> 28 <result column="sex" property="sex"/> 29 <result column="address" property="address"/> 30 </association> 31 32 </resultMap>
![](/assets/blank.gif)
2. statement定义
![](/assets/blank.gif)
1 <!-- 查询订单,关联查询用户信息,使用resultMap实现 --> 2 <select id="findOrdersUserResultMap" resultMap="OrdersUserResultMap"> 3 SELECT t1.*, 4 t2.username, 5 t2.sex, 6 t2.address 7 FROM 8 orders t1, 9 t_user t2 10 WHERE t1.user_id=t2.id 11 </select>
![](/assets/blank.gif)
3.OrderCustomMapper.java接口中添加下面的方法
/** 查询订单关联查询用户信息,使用reslutMap实现*/ public List<Orders>findOrdersUserResultMap();
4.对是resultType和resultMap实现的Junit测试
![](/assets/blank.gif)
5.resultType和resultMap实现一对一查询小结
实现一对一查询:
a.resultType:使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射。
b.如果没有查询结果的特殊要求建议使用resultType。
c.resultMap:需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求,使用resultMap可以完成将关联查询映射pojo的属性中。
d.resultMap可以实现延迟加载,resultType无法实现延迟加载。
三、一对多查询
3.1. 需求:查询订单(关联用户)及订单明细;
3.2. 在orders.java类中添加List<orderDetail> orderDetails属性(上面实体已添加)。
最终会将订单信息映射到orders中,订单所对应的订单明细映射到orders中的orderDetails属性中.
3.3.在ordersCustomMapper.xml中添加如下代码
![](/assets/blank.gif)
<!-- 查询订单关联查询用户及订单明细 --><select id="findOrdersAndOrderDetailResultMap" resultMap="ordersAndOrderDetailResultMap">SELECT t1.*,t2.username,t2.sex,t2.address,t3.id orderdetail_id,t3.items_id,t3.items_num,t3.orders_idFROMorders t1,t_user t2,orderdetail t3WHERE t1.user_id = t2.id AND t3.orders_id=t1.id</select>
![](/assets/blank.gif)
resultMap的定义同样添加到ordersCustomMapper.xml
![](/assets/blank.gif)
<!-- 查询订单(关联用户)及订单明细的resultMap --><resultMap type="com.mybatis.entity.Orders" id="ordersAndOrderDetailResultMap" extends="OrdersUserResultMap"><!-- 订单信息 --><!-- 关联用户信息 --><!-- 使用extends继承,不用在中配置订单信息和用户信息的映射--><!-- 关联订单明细信息 一个订单关联查询出了多条订单明细,要使用collection映射collection:对关联查询到的多条记录映射到集合中property:将关联查询到的多条记录映射到orders类的那个属性ofType:指定映射的集合属性中pojo的类型--><collection property="orderdetails" ofType="com.mybatis.entity.OrderDetail"><!-- id:唯一标识property:要将订单明细的唯一标识映射到com.mybatis.entity.OrderDetail的那个属性--><id column="orderdetail_id" property="id"/><result column="items_id" property="itemsId"/><result column="items_num" property="itemsNum"/><result column="orders_id" property="ordersId"/></collection></resultMap>
![](/assets/blank.gif)
3.4. 在OrderCustomMapper.java接口类中添加一个方法
/**查询订单(关联用户)以及订单明细*/public List<OrderDetail>findOrdersAndOrderDetailResultMap();
3.5.在Junit测试类中添加测试方法
![](/assets/blank.gif)
// 查询订单(关联用户)以及订单明细的测试 @Testpublic void TestFindOrdersAndOrderDetailResultMap() {SqlSession sqlSession = sqlSessionFactory.openSession();// 创建代理对象OrdersCustomMapper oc = sqlSession.getMapper(OrdersCustomMapper.class);// 调用mapper的方法List<OrderDetail> list = oc.findOrdersAndOrderDetailResultMap();System.out.println(list);sqlSession.close(); }
![](/assets/blank.gif)
3.6. 小结
mybatis使用resultMap的collection对关联查询的多条记录映射到一个list集合属性中。
使用resultType实现:将订单明细映射到orders中的orderdetails中,需要自己处理,使用双重循环遍历,去掉重复记录,将订单明细放在orderdetails中。
四、多对多查询
4.1.需求:查询用户以及用户购买的商品信息
4.2.映射思路
将用户信息映射到user中。
在user类中添加订单列表属性List<Orders> orderslist,将用户创建的订单映射到orderslist;
在Orders中添加订单明细列表属性List<OrderDetail>orderdetials,将订单的明细映射到orderdetials;
在OrderDetail中添加Items属性,将订单明细所对应的商品映射到Item;
4.3.OrdersCustomMapper.xml添加如下代码
![](/assets/blank.gif)
<!-- 查询用户即购买的商品信息的ResultMap --><resultMap type="com.mybatis.entity.User" id="userAndItemsResultMap"><!-- 用户信息 --><id column="user_id" property="id"/><result column="username" property="username"/><result column="sex" property="sex"/><result column="address" property="address"/><!-- 订单信息一个用户对应多个订单,使用collection映射 --><collection property="ordersList" ofType="com.mybatis.entity.Orders"><id column="id" property="id"/><result column="user_id" property="userid"/><result column="number" property="number"/><result column="createtime" property="createTime"/><result column="note" property="note"/><!-- 订单明细一个订单包括 多个明细--><collection property="orderdetails" ofType="com.mybatis.entity.OrderDetail"><id column="orderdetail_id" property="id"/><result column="items_id" property="itemsId"/><result column="items_num" property="itemsNum"/><result column="orders_id" property="ordersId"/><!-- 商品信息一个订单明细对应一个商品--><association property="items" javaType="com.mybatis.entity.Items"><id column="items_id" property="id"/><result column="items_name" property="itemsName"/><result column="items_detail" property="detail"/><result column="items_price" property="price"/></association></collection></collection></resultMap><!-- 查询用户及用户购买的商品信息,使用resulaMap--><select id="findUserAndItemsResultMap" resultMap="userAndItemsResultMap">SELECT t1.*,t2.username,t2.sex,t2.address,t3.id orderdetail_id,t3.items_id,t3.items_num,t3.orders_id,t4.itemsname items_name,t4.detail items_detail,t4.price items_priceFROMorders t1,t_user t2,orderdetail t3,items t4WHERE t1.user_id = t2.id AND t3.orders_id=t1.id AND t3.items_id = t4.id</select>
![](/assets/blank.gif)
4.4. 在OrderCustomMapper.java添加如下方法
/** 查询用户及用户所购买的商品信息 */public List<User> findUserAndItemsResultMap();
4.5.在Junit测试类中添加测试方法
![](/assets/blank.gif)
// 查询用户及用户购买的商品的信息 @Testpublic void TestFindUserAndItemsResultMap() {SqlSession sqlSession = sqlSessionFactory.openSession();// 创建代理对象OrdersCustomMapper oc = sqlSession.getMapper(OrdersCustomMapper.class);// 调用mapper的方法List<User> list = oc.findUserAndItemsResultMap();System.out.println(list);sqlSession.close();}
![](/assets/blank.gif)
4.6.resultMap总结
resultType:
作用:将查询结果按照sql列名pojo属性名一致性映射到pojo中。
场合:
常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用resultType将每一条记录映射到pojo中,在前端页面遍历list(list中是pojo)即可。
resultMap:
使用association和collection完成一对一和一对多高级映射(对结果有特殊的映射要求)。
association:
作用:将关联查询信息映射到一个pojo对象中。
场合:
为了方便查询关联信息可以使用association将关联订单信息映射为用户对象的pojo属性中,比如:查询订单及关联用户信息。
使用resultType无法将查询结果映射到pojo对象的pojo属性中,根据对结果集查询遍历的需要选择使用resultType还是resultMap。
collection:
作用:将关联查询信息映射到一个list集合中。
场合:
为了方便查询遍历关联信息可以使用collection将关联信息映射到list集合中,比如:查询用户权限范围模块及模块下的菜单,可使用collection将模块映射到模块list中,将菜单列表映射到模块对象的菜单list属性中,这样的作的目的也是方便对查询结果集进行遍历查询。
如果使用resultType无法将查询结果映射到list集合中。
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
关注 - 22
粉丝 - 496
» 下一篇:mybatis入门基础(七)----延迟加载
订单详细表再加个数量
没问题,交流互助,共同进步。
谢谢支持!
3.4中的这个返回类型错了哦,应该是
public List<Orders> findOrdersAndOrderDetailResultMap();
【域名】腾讯云 新注册用户域名抢购1元起
【推荐】报表开发有捷径:快速设计轻松集成,数据可视化和交互
· Ubuntu18.04 LTS代号Bionic Beaver 定于2018年4月26日发布
· 大学生点外卖送流浪者获阿里正能量奖金5000元 全部捐出
· 剑桥大学发言人:霍金首次免费公开的博士论文引发网站拥堵
· 谷歌联手英特共同开发移动芯片Pixel Visual Core
· 比尔·盖茨基金会:脊髓灰质炎今年有望被消灭
» 更多新闻...
![](/assets/blank.gif)
· 如何阅读计算机科学类的书
· Google 及其云智慧
· 做到这一点,你也可以成为优秀的程序员
· 写给立志做码农的大学生
» 更多知识库文章...
公告
园龄:2年9个月
粉丝:496
关注:22
|
|||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
24 | 25 | 26 | 27 | 28 | 29 | 30 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 | |||
8 | 9 | 10 | 11 | 12 | 13 | 14 | |||
15 | 16 | 17 | 18 | 19 | 20 | 21 | |||
22 | 23 | 24 | 25 | 26 | 27 | 28 | |||
29 | 30 | 31 | 1 | 2 | 3 | 4 |
搜索
常用链接
- 我的随笔
- 我的评论
- 我的参与
- 最新评论
- 我的标签
我的标签
- mybatis(5)
- 集合(4)
- mybatis mapper(3)
- 反射(2)
- springmvc(2)
- 异常(2)
- mybatis配置文件(2)
- mvc(2)
- mybatis延迟加载(1)
- 游标(1)
- 更多
随笔分类(56)
- JAVA
- JAVA面试(2)
- mybatis(9)
- SpringMVC(2)
- Sql Server(12)
- 编写高质量代码 改善java程序的151个建议(28)
- 程序人生(2)
- 技术分享(1)
随笔档案(56)
- 2016年10月 (8)
- 2016年9月 (20)
- 2015年8月 (1)
- 2015年7月 (9)
- 2015年6月 (3)
- 2015年5月 (8)
- 2015年4月 (6)
- 2015年2月 (1)
相册(1)
- hobby(1)
积分与排名
- 积分 - 105799
- 排名 - 2660
最新评论
- 1. Re:MyBatis入门基础(一)
- 很详细,mybatis入门基础
- --小妖,快跑我断后
- 2. Re:SQL Server基础之存储过程
- @happy萍儿这里我尝试回复一下:1)带通配符的存储过程,创建存储过程时给变量的赋值为默认值,执行存储过程时没有另行赋值时这里会起作用,比如本例中,执行“exec charBooks ”则等同于执......
- --暗夜守望
- 3. Re:MyBatis入门基础(一)
- 感谢楼主总结 收藏了
- --songge324919
- 4. Re:springMVC学习笔记(二)-----注解和非注解入门小程序
- 博主写的很详细,好文,赞!!不过我有个疑惑就是你用的${pageContext.request.contextPath }/item/queryItem.action这里的action和itemsCo......
- --Stanley_小麦冬
- 5. Re:MyBatis入门基础(一)
- 我复制走了啊,谢谢,内容很不错。
- --张~康
阅读排行榜
- 1. mybatis入门基础(六)----高级映射(一对一,一对多,多对多)(25853)
- 2. MyBatis入门基础(一)(18631)
- 3. 为什么我不推荐大家去外包公司(12662)
- 4. SQL Server基础之存储过程(12023)
- 5. JAVA常见面试题之Forward和Redirect的区别(11172)
评论排行榜
- 1. 为什么我不推荐大家去外包公司(108)
- 2. 客观评价下软件培训机构(41)
- 3. MyBatis入门基础(一)(29)
- 4. SQL Server基础之存储过程(21)
- 5. 编写高质量代码:改善Java程序的151个建议(第2章:基本类型___建议21~25)(17)
推荐排行榜
- 1. MyBatis入门基础(一)(110)
- 2. 为什么我不推荐大家去外包公司(98)
- 3. 编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议1~5)(51)
- 4. springMVC学习笔记(一)-----springMVC原理(39)
- 5. SQL Server基础之存储过程(31)
mybatis高级映射(一对一,一对多,多对多)相关推荐
- Mybatis中的关系映射(一对一,一对多,多对多)
在网上寻了很久,大多数讲关系性的文章都是大篇幅的去将表照搬上来,本来就很生硬,此文就不在讲述关系性映射的具体实现,转而从浅层来讲讲其概念性. 1.1 关联关系概述 在关系型数据库中,多表之间存在着三种 ...
- 【Mybatis高级映射】一对一映射、一对多映射、多对多映射
前言 当我们学习heribnate的时候,也就是SSH框架的网上商城的时候,我们就学习过它对应的高级映射,一对一映射,一对多映射,多对多映射.对于SSM的Mybatis来说,肯定也是差不多的.既然开了 ...
- mysql中建立一对多映射_Mybatis中的高级映射一对一、一对多、多对多
学习hibernate的时候,小编已经接触多各种映射,mybatis中映射有到底是如何运转的,今天这篇博文,小编主要来简单的介绍一下mybatis中的高级映射,包括一对一.一对多.多对多,希望多有需要 ...
- 7. MyBatis多表查询 - 一对一 - 一对多 - 多对多
7. MyBatis多表查询 - 一对一 - 一对多 - 多对多 前言 在前面的篇章,我们已经熟悉了单表查询,下面我们来看看如何进行 多表查询. 数据准备 create database if not ...
- mybatis的一对一 一对多 多对多
mybatis的一对一 一对多 多对多 1.表 2.建表语句 order_t表 CREATE TABLE `order_t` ( `id` int(11) NOT NULL, `user_id` in ...
- SQLAlchemy_定义(一对一/一对多/多对多)关系
SQLAlchemy_定义(一对一/一对多/多对多)关系 目录 Basic Relationship Patterns One To Many One To One Many To Many Basi ...
- Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作
Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: 由于如果只使用一张表存储所有的数据,就会操作数 ...
- mybatis入门(六)----高级映射(一对一,一对多,多对多)
阅读目录 一:订单商品数据模型 二.一对一查询 三.一对多查询 四.多对多查询 回到顶部 一:订单商品数据模型 1.数据库执行脚本 创建数据库表代码: View Code 测试数据代码: View C ...
- mybatis入门基础----高级映射(一对一,一对多,多对多)
一:订单商品数据模型 1.数据库执行脚本 创建数据库表代码: 查看代码 测试数据代码: 查看代码 2.数据模型分析思路 (1).每张表记录的数据内容:分模块对每张表记录的内容进行熟悉,相当于你学习 ...
最新文章
- minimax search算法
- 什么叫工作到位?很深刻!
- 组装电脑配置单报价_组装电脑配置单推荐,性价比高的游戏、画图和办公全能配置电脑!...
- ruby map, reduce, select, reject, group_by
- 轻松掌握namedtuple
- c语言学函数,c语言学习常用函数(9页)-原创力文档
- 黑苹果电池电量补丁_【黑苹果】用一次实战记录电池热补丁的编写方法
- php 管理员界面源码,ThinkPHP通用后台管理系统TP-Admin
- 火狐浏览器插件学习01
- 场景法测试用例设计详解
- msvcr71.dll丢失的解决方法,如何快速进行丢失修复?
- Codeforces Round #384 B. Chloe and the sequence
- 6-2 求解一元二次方程实根的函数 (10 分)
- cpu平均负载高的几种情况
- div标签别样的属性——tabindex
- 查看路由器中宽带的账号密码等
- 云计算介绍之云计算服务器
- 《把时间当作朋友》第1章读后感(一)
- 【ROS RIKIBOT 基础--使用系列 第八章节】超声波跟随、雷达跟随、手机APP建地图、视觉单线寻线
- C++循环语句之在0-1000之间找出水仙花数。