Mybatis(二):实现“增删改查”
Mybatis(二):实现“增删改查”
- 前言
- 一、MyBatis的增删改查
- 1、添加
- 2、修改
- 3、删除
- 4、查询
- 4.1 查询一个实体
- 4.1 查询集合
- 二、MyBatis获取参数值的两种方式(重点)
- 1、单个字面量类型的参数
- 2、多个字面量类型的参数
- 3、map集合类型的参数
- 4、实体类类型的参数
- 5、使用@Param标识参数
- 6、结论
- 三、MyBatis的各种查询功能
- 1、查询一个实体类对象
- 2、查询一个list集合
- 3、查询单个数据
- 4、查询一条数据为map集合
- 5、查询多条数据为map集合
- 6、结论
前言
本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!
一、MyBatis的增删改查
1、添加
UserMapper
接口:
/***添加用户信息*/int insertUser();
UserMapper.xml
:
<!--int insertUser();--><insert id="insertUser">insert into t_user values(null,'张三','123',23,'女')</insert>
2、修改
UserMapper
接口:
/*** 修改用户信息*/void updateUser();
UserMapper.xml
:
<!-- void updateUser();--><update id = "updateUser">update t_user set username = '张三' where id = 4</update>
3、删除
UserMapper
接口:
/*** 删除用户信息*/void deleteUser();
UserMapper.xml
:
<!-- void deleteUser();--><delete id="deleteUser">delete from t_user where id = 5</delete>
4、查询
4.1 查询一个实体
UserMapper
接口:
/*** 查询用户信息*/User getUserId();
UserMapper.xml
<!--User getUserById();--><!--查询功能的标签必须设置resultType或resultMapresultType:设置默认的映射关系resultMap:设置自定义的映射关系--><select id="getUserById" resultType="com.ir.mybaits.pojo.User">select * from t_user where id = 3</select>
4.1 查询集合
UserMapper
接口:
/*** 查询用户信息*/List<User> getAllUser();
UserMapper.xml
:
<!--List<User> getAllUser();--><select id="getAllUser" resultType="User">select * from t_user</select>
注意:
⭕ 查询的标签
select
必须设置属性resultType
或resultMap
,用于设置实体类和数据库表的映射关系
●resultType
:自动映射,用于属性名和表中字段名一致的情况
●resultMap
:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况
⭕当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常
TooManyResultsException
,但是若查询的数据只有一条,可以使用实体类或集合作为返回值
二、MyBatis获取参数值的两种方式(重点)
MyBatis
获取参数值的两种方式:${}
和#{}
⭕
${}
的本质就是字符串拼接,使用字符串拼接的方式拼接sql
,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;
⭕
#{}
的本质就是占位符赋值,但是#{}使用占位符赋值的方式拼接sql
,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号
1、单个字面量类型的参数
⭕ 若
mapper
接口中的方法参数为单个的字面量类型,此时可以使用${}
和#{}
以任意的名称获取参数的值,但是需要注意${}
的单引号问题
⭕ 代码演示:
UserMapper
/*** @description:查询用户信息* @author: Hey* @date: 2022/7/3 16:53* @param: [username]* @return: com.ir.mybatis.pojo.User**/User getUserByUsername(String username);
UserMapper.xml
<!--User getUserByUsername(String username);--><select id="getUserByUsername" resultType="user"><!--此时只注重传递过来的值,{username}中的usernsme可以替换为任意字母,结果都不会改变--><!--select * from t_user where username = '${username}';-->select * from t_user where username = #{username};</select>
UserMapperTest
/*** @description:* @author: Hey* @date: 2022/7/3 15:29* @param: []* @return: void**/@Testpublic void getUserByUsername(){UserMapper userMapper = SqlSessionUtils.getSqlSession().getMapper(UserMapper.class);System.out.println(userMapper.getUserByUsername("张三"));}
2、多个字面量类型的参数
⭕
mapper
接口方法的参数为多个时,此时MyBatis
会将这些参数放在一个map
集合中,以两种方式进行存储
- 以
arg0
,arg1
…为键,以参数为值- 以
param1
,param2
…为键,以参数为值因此只需要通过
${}
和#{}
访问map
集合的键就可以获取相对应的 值,但是需要注意${}的单引号问题。
⭕ 代码演示:
UserMapper
/*** @description:检查用户登录信息* @author: Hey* @date: 2022/7/3 15:46* @param: [username, password]* @return: com.ir.mybatis.pojo.User**/User checkLoginByParameter(String username,String password);
UserMapper.xml
<!--User checkLoginByParameter(String username,String password);--><select id="checkLoginByParameter" resultType="user">select * from t_user where username=#{arg0} and password=#{arg1};</select>
UserMapperTest
/*** @description:* @author: Hey* @date: 2022/7/3 15:30* @param: []* @return: void**/@Testpublic void checkLoginByParam(){UserMapper userMapper = SqlSessionUtils.getSqlSession().getMapper(UserMapper.class);User user = userMapper.checkLoginByParameter("张三","123");System.out.println(user);}
3、map集合类型的参数
⭕ 若
mapper
接口中的方法需要的参数为多个时,此时可以手动创建map
集合,将这些数据放在map
中,只需要通过${}
和#{}
访问map
集合的键就可以获取相对应的值,但是需要注意${}
的单引号问题
⭕ 代码演示:
UserMapper
/*** @description:通过自定义Map来验证登录* @author: Hey* @date: 2022/7/3 15:45* @param:* @return:**/User checkLoginByMap(Map<String, Object> map);
UserMapper.xml
<!--User checkLoginByMap(Map<String, Object> map);--><select id="checkLoginByMap" resultType="user">select * from t_user where username=#{username} and password=#{password};</select>
UserMapperTest
/*** @description:测试通过自定义Map验证登录* @author: Hey* @date: 2022/7/3 15:55* @param: []* @return: void**/@Testpublic void checkLoginByMap(){UserMapper userMapper = SqlSessionUtils.getSqlSession().getMapper(UserMapper.class);Map<String,Object> map = new HashMap<>();map.put("username","张三");map.put("password","123");User user = userMapper.checkLoginByMap(map);System.out.println(user);}
4、实体类类型的参数
⭕ 若
mapper
接口中的方法参数为实体类对象时,此时可以使用${}
和#{}
,通过访问实体类对象中的属性名获取属性值,但是需要注意${}
的单引号问题
⭕ 代码演示:
UserMapper
/*** @description:添加用户* @author: Hey * @date: 2022/7/3 16:11* @param: [user]* @return: int**/Integer insertUser(User user);
UserMapper.xml
<!--int insertUser(User user);--><select id="insertUser" >insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email})</select>
UserMapperTest
/*** @description:添加用户 * @author: Hey* @date: 2022/7/3 16:24* @param: []* @return: void**/@Testpublic void insertUser(){UserMapper userMapper = SqlSessionUtils.getSqlSession().getMapper(UserMapper.class);Integer result = userMapper.insertUser(new User(null,"喜羊羊","123456",18,"男","123123@qq.com"));System.out.println(result);}
5、使用@Param标识参数
⭕ 可以通过
@Param
注解标识mapper
接口中的方法参数,此时,会将这些参数放在map
集合中,以如下两种方式来取值访问:
- 以
@Param
注解的value
属性值为键,以参数为值;- 以
param1
,param2
…为键,以参数为值;只需要通过
${}
和#{}
访问map
集合的键就可以获取相对应的值,但是需要注意${}
的单引号问题
⭕ 代码演示:
UserMapper
/*** @description:通过参数注解验证登录* @author: Hey * @date: 2022/7/3 16:59* @param: [username, password]* @return: com.ir.mybatis.pojo.User**/User checkLoginByParam(@Param("username") String username, @Param("password") String password);
UserMapper.xml
<!--User checkLoginByParam(@Param("username") String username, @Param("password") String password);--><select id="checkLoginByParam" resultType="User">select * from t_user where username = #{username} and password = #{password}</select>
UserMapperTest
/*** @description:通过注解方式验证登录* @author: Hey* @date: 2022/7/3 16:57* @param: []* @return: void**/@Testpublic void testCheckLoginByParam(){SqlSession sqlSession = SqlSessionUtils.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);User user = mapper.checkLoginByParam("admin", "123456");System.out.println(user);}
6、结论
将以上五种情况分为两类情况
⭕ 情况一:参数为实体类型
⭕ 情况二:参数都用@Param
来修饰
三、MyBatis的各种查询功能
1、查询一个实体类对象
SelectMapper
/*** @description:通过id查询用户* @author: Hey* @date: 2022/7/3 17:54* @param: [id]* @return: com.ir.mybatis.pojo.User**/User getUserById(@Param("id") Integer id);
SelectMapper.xml
<select id="getUserById" resultType="user">select * from t_user where id= #{id};</select>
SelectMapperTest
/*** @description:通过id查询用户* @author: Hey* @date: 2022/7/3 17:58* @param: []* @return: void**/@Testpublic void getUserById(){SelectMapper selectMapper = SqlSessionUtils.getSqlSession().getMapper(SelectMapper.class);User user = selectMapper.getUserById(3);System.out.println(user);}
2、查询一个list集合
SelectMapper
/*** @description:获取多个用户* @author: Hey* @date: 2022/7/3 17:56* @param: []* @return: java.util.List<com.ir.mybatis.pojo.User>**/List<User> getAllUser();
SelectMapper.xml
<select id="getAllUser" resultType="user">select * from t_user;</select>
SelectMapperTest
/*** @description:查询所有用户* @author: Hey* @date: 2022/7/3 18:00* @param: []* @return: void**/@Testpublic void getAllUser(){SelectMapper selectMapper = SqlSessionUtils.getSqlSession().getMapper(SelectMapper.class);List<User> list = selectMapper.getAllUser();for (User user:list) {System.out.println(user);}}
3、查询单个数据
在MyBatis
中,对于Java
中常用的类型都设置了类型别名
Alias | Mapped Type |
---|---|
_byte | byte |
_char (since 3.5.10) | char |
_character (since 3.5.10) | char |
_long | long |
_short | short |
_int | int |
_integer | int |
_double | double |
_float | float |
_boolean | boolean |
string | String |
byte | Byte |
char (since 3.5.10) | Character |
character (since 3.5.10) | Character |
long | Long |
short | Short |
int | Integer |
integer | Integer |
double | Double |
float | Float |
boolean | Boolean |
date | Date |
decimal | BigDecimal |
bigdecimal | BigDecimal |
biginteger | BigInteger |
object | Object |
date[] | Date[] |
decimal[] | BigDecimal[] |
bigdecimal[] | BigDecimal[] |
biginteger[] | BigInteger[] |
object[] | Object[] |
map | Map |
hashmap | HashMap |
list | List |
arraylist | ArrayList |
collection | Collection |
iterator | Iterator |
SelectMapper
/*** @description:查询用户信息的总记录数* @author: Hey* @date: 2022/7/3 20:40* @param: []* @return: java.lang.Integer**/Integer getCount();
SelectMapper.xml
<select id="getCount" resultType="int">select count(1) from t_user;</select>
SelectMapperTest
/*** @description:查询用户信息的总记录数* @author: Hey * @date: 2022/7/3 20:45* @param: []* @return: void**/@Testpublic void getCount(){SelectMapper selectMapper = SqlSessionUtils.getSqlSession().getMapper(SelectMapper.class);int result = selectMapper.getCount();System.out.println(result);}
4、查询一条数据为map集合
SelectMapper
/*** @description:根据id查询用户信息为一个map集合* @author: Hey* @date: 2022/7/3 20:59* @param: [id]* @return: java.util.Map<java.lang.String,java.lang.Object>**/Map<String,Object> getUserByIdToMap(@Param("id")Integer id);
SelectMapper.xml
<select id="getUserByIdToMap" resultType="map">select * from t_user where id=#{id}
</select>
SelectMapperTest
/*** @description:根据id查询用户信息为一个map集合* @author: Hey* @date: 2022/7/3 21:03* @param: []* @return: void**/@Testpublic void getUserByIdToMap(){SelectMapper selectMapper = SqlSessionUtils.getSqlSession().getMapper(SelectMapper.class);System.out.println(selectMapper.getUserByIdToMap(5));//{password=123456, sex=男, id=5, age=18, email=123123@qq.com, username=喜羊羊}}
5、查询多条数据为map集合
方式一:
SelectMapper
/*** @description:查询所有用户信息为Map集合* * 将表中的数据以map集合的方式查询,一条数据对应一个map;* 若有多条数据,就会产生多个map集合,此时可以将这些map放在一个list集合中获取* * @author: Hey* @date: 2022/7/3 21:15* @param: []* @return: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>**/List<Map<String, Object>> getAllUserToMap();
SelectMapper.xml
<select id="getAllUserToMap" resultType="map">select * from t_user</select>
SelectMapperTest
/*** @description:查询所有用户信息为Map集合* @author: Hey* @date: 2022/7/3 21:17* @param: []* @return: void**/
@Testpublic void testGetAllUserToMap(){SqlSession sqlSession = SqlSessionUtils.getSqlSession();SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);System.out.println(mapper.getAllUserToMap());/*** [{password=123, sex=女, id=1, age=23, email=12345@qq.com, username=张三},* {password=123456, sex=男, id=2, age=18, email=123123@qq.com, username=喜羊羊}]*/}
方式二:
SelectMapper
/*** @description:查询所有用户信息为Map集合* * 将表中的数据以map集合的方式查询,一条数据对应一个map;* 若有多条数据,就会产生个map集合,并且最终要以一个map的方式返回数据,此时需要通过@MapKey注解设置map集合的键,值是每条数据所对应的map集合* * @author: Hey* @date: 2022/7/3 21:15* @param: []* @return: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>**/@MapKey("id")Map<String, Object> getAllUserToMap();
SelectMapper.xml
<select id="getAllUserToMap" resultType="map">select * from t_user</select>
SelectMapperTest
/*** @description:查询所有用户信息为Map集合* @author: Hey* @date: 2022/7/3 21:17* @param: []* @return: void**/@Testpublic void testGetAllUserToMap(){SqlSession sqlSession = SqlSessionUtils.getSqlSession();SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);System.out.println(mapper.getAllUserToMap());/*** {* 1={password=123, sex=女, id=1, age=23, email=12345@qq.com, username=张三}, * 2={password=123456, sex=男, id=2, age=18, email=123123@qq.com, username=喜羊羊}* }*/}
6、结论
MyBatis
的各种查询功能:
⭕ 若查询出的数据只有一条
● 可以通过实体类对象接收
● 可以通过list
集合接收
● 可以通过map
集合接收
结果:
{password=123456, sex=男, id=3, age=23, email=12345@qq.com, username=admin}
⭕ 若查询出的数据有多条
● 可以通过实体类类型的list
集合接收
● 可以通过map
类型的list
集合接收
●可以在mapper
接口的方法上添加@MapKey
注解,此时就可以将每条数据转换的map
集合作为值,以某个字段的值作为键,放在同一个map
集合中
⭕ 注意:一定不能通过实体类对象接收,此时会抛异常
TooManyResultsException
相关文章:

Mybatis(二):实现“增删改查”
Mybatis(二):实现“增删改查”前言一、MyBatis的增删改查1、添加2、修改3、删除4、查询4.1 查询一个实体4.1 查询集合二、MyBatis获取参数值的两种方式(重点)1、单个字面量类型的参数2、多个字面量类型的参数3、map集合…...

Faster RCNN 对血液细胞目标检测
目录 1. 介绍 2. 工具函数介绍 utils 2.1 xml 文件的读取 get_label_from_xml 2.2 绘制边界框 draw_bounding_box...

【数据结构】Java实现栈
目录 1. 概念 2. 栈的使用 3. 自己动手实现栈(使用动态数组实现栈) 1. 创建一个MyStack类 2. push入栈 3. pop出栈 4. 查看栈顶元素 5. 判断栈是否为空与获取栈长 6. toString方法 4. 整体实现 4.1 MyStack类 4.2 Test类 4.3 测试结果 1.…...

【数据结构】排序
作者:✿✿ xxxflower. ✿✿ 博客主页:xxxflower的博客 专栏:【数据结构】篇 语录:⭐每一个不曾起舞的日子,都是对生命的辜负。⭐ 文章目录1.排序1.1排序的概念1.2常见的排序算法2.常见排序算法2.1插入排序2.1.1直接插入…...

过拟合、验证集、交叉验证
过拟合 简单描述:训练集误差小,测试集误差大,模型评估指标的方差(variance)较大; 判断方式: 1、观察 train set 和 test set 的误差随着训练样本数量的变化曲线。 2、通过training accuracy 和…...

原力计划来了【协作共赢 成就未来】
catalogue🌟 写在前面🌟 新星计划持续上新🌟 原力计划方向🌟 原力计划拥抱优质🌟 AIGC🌟 参加新星计划还是原力计划🌟 创作成就未来🌟 写在最后🌟 写在前面 哈喽&#x…...

一文了解Jackson注解@JsonFormat及失效解决
背景 项目中使用WRITE_DATES_AS_TIMESTAMPS: true转换日期格式为时间戳未生效。如下: spring:jackson:time-zone: Asia/Shanghaiserialization:WRITE_DATES_AS_TIMESTAMPS: true尝试是否关于时间的注解是否会生效,使用JsonForma和JsonFiled均失效。 常…...

webpack——使用、分析打包代码
世上本无nodejs js最初是在前端浏览器上运行的语言,js代码一旦脱离了浏览器环境,就无法被运行。直到nodejs的出现,我们在电脑上配置了node环境,就可以让js代码脱离浏览器,在node环境中运行。 浏览器不支持模块化 nodej…...

libvirt零知识学习5 —— libvirt源码编译安装(3)
接前一篇文章libvirt零知识学习4 —— libvirt源码编译安装(2) 在上篇文章及上上篇文章中构建libvirt的时候遇到了一个问题“ERROR: Problem encountered: YAJL 2 is required to build QEMU driver”。上篇文章讲到即使安装了相应的YAJL库仍然不能解决问…...

Nmap 的使用教程
Nmap是一个网络侦测和安全审计工具。它可以用于发现网络上的主机和服务,并提供广泛的信息,其中包括操作系统类型和版本、应用程序和服务的详细信息等。在本文中,我们将介绍如何使用Nmap扫描网络主机,识别开放端口以及进行操作系统…...

async与await异步编程
ECMA2017中新加入了两个关键字async与await 简单来说它们是基于promise之上的的语法糖,可以让异步操作更加地简单明了 首先我们需要用async关键字,将函数标记为异步函数 async function f() {} f()异步函数就是指:返回值为promise对象的函…...

移动应用架构设计:如何转变开发流程
移动应用架构设计:如何转变开发流程 2023 年掌握移动应用程序架构的指南(附案例研究) 如果他们要解决这个问题,开发人员需要了解移动架构设计的最佳实践,使他们能够构建用户喜欢的优化应用程序。其中一些做法包括使用…...

NX二次开发 图层函数总结
简介: NX二次开发 图层相关的总结。 函数: uc5007()uc5008()uc5009()UF_LAYER_ask_category_info()获取图层类别的信息UF_LAYER_ask_category_tag()根据图层分类名称查询其图层分类标识UF_LAYER_ask_status()UF_LAYER_ask_work_layer()UF_LAYER_create…...

windows微服务部署
windows部署一.nginx部署1.nginx 官网下载2. 配置nginx3.配置nigix 防止nigix刷新404不生效二.配置redis部署成服务1.在系统配置中 配置为系统变量2.打开快捷登录服务管理#3. 开启redis三.windows部署jar包一.nginx部署 1.nginx 官网下载 地址 官网地址 安装 windows版本 可安…...

Java四种内部类(看这一篇就够了)
🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔🦾&am…...

蓝桥杯刷题第二十天
第一题:纸张尺寸问题描述在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm 841mm, 将 A0 纸 沿长边对折后为 A1 纸, 大小为 841mm 594mm, 在对折的过程中长度直接取 下整 (实际裁剪时可能有损耗)。将 A1 纸沿长边对折后为 A2 纸, 依此类推。输入纸张的名称, 请输出…...

如何通过命令行查看CentOS版本信息和linux系统信息
1.如何查看已安装的CentOS版本信息: 1.cat /proc/version 2.uname -a 3.uname -r 4.cat /etc/centos-release 5.lsb_release -a 6.hostnamectl1. 第一种方式输出的结果是: Linux version 3.10.0-1127.el7.x86_64 (mockbuildkbuilder.bsys.centos.org) …...

oracle查询表空间大小以及每个表所占空间的大小
1、查询数据库中所有的表空间以及表空间所占空间的大小,直接执行语句就可以了: select tablespace_name, sum(bytes)/1024/1024 from dba_data_files group by tablespace_name; 2、查看表空间物理文件的名称及大小 select tablespace_name, file_id, …...

C语言通讯录应用程序:从设计到实现
hello,这期给大家带来C语言实现静态通讯录,主要也是建立起创建大项目的思维,与往期这两篇博客有点类似 C语言实现三子棋 C语言实现扫雷 文章目录🤓通讯录介绍😶🌫️效果演示🤠主题框架头文件测试文件函数…...

银河麒麟v10sp2安装nginx
nginx官网下载:http://nginx.org/download/ 银河麒麟系统请先检查yum源是否配置,若没有配置请参考:https://qdhhkj.blog.csdn.net/article/details/129680789 一、安装 1、yum安装依赖 yum install gcc gcc-c make unzip pcre pcre-devel …...

华为笔试题OD
华为笔试题OD 1题 华为od-2022.11.5-k优雅阈值 题目内容 如果一个数组中出现次数最多的元素出现大于等于 �k 次, 被称为 �−优雅数组k−优雅数组 , �k 也可以被称为优雅阈值。 例如,数组 [1,2,3,1,2,3,…...

Win10+Anconda安装.whl文件到指定环境——以pycocotools为例
Anconda安装.whl文件到指定环境1.Whl文件2.pycocotools安装前言:本篇文章主要记录了两个问题: (1)Win10环境下,利用Anconda安装.whl文件到指定环境的方法; (2)Win10系统安装pycocoto…...

全自动托盘四向穿梭车|拥有输送系统提升机AGV的托盘四向穿梭车立体库的软硬件配置系统
托盘四向穿梭车一般是在两向穿梭车的结构上设计改进而来的,托盘两向穿梭车在取货时可以实现“先进先出”或“先入后出”模式,多用于量大且品种少的行业。但是随着市场的不断迅速发展,各大企业、商家不仅对于小批量、多批次的需求越来越大&…...

【Linux】进程概念二
文章目录进程概念二1. 进程状态2. 进程状态查看3. 僵尸进程3.1 僵尸进程的危害4. 孤儿进程5. 环境变量5.1 常见环境变量5.2 查看环境变量的方法5.3 测试PATH5.4 环境变量相关的命令5.5 环境变量的组织方式5.6 通过代码获取环境变量6. 程序地址空间7. 进程地址空间8. 扩展8.1 为…...

如何用C语言实现渣男通讯录
注意:纯属玩笑,博大家一乐,切勿当真📖首先我们要知道一个渣男通讯录有哪些信息要包含哪些功能1.你的通讯录要装多少个女朋友你得规定吧;2.每个女朋友的姓名,年龄,电话,爱好这些要有吧…...

【从零开始的C语言】操作符详解
文章目录前言一、操作符分类二、算术操作符三、移位操作符3.1 左移3.2 右移四、位操作符(重要)五、赋值操作符六、单目操作符七、关系操作符八、逻辑操作符九、条件操作符十、逗号表达式前言 本篇文章开始,我将开设《从零开始的C语言》专栏&…...

黑马在线教育数仓实战1
1. 教育项目的架构说明 项目的架构: 基于cloudera manager大数据统一管理平台, 在此平台之上构建大数据相关的软件(zookeeper,HDFS,YARN,HIVE,OOZIE,SQOOP,HUE...), 除此以外, 还使用FINEBI实现数据报表展示 各个软件相关作用: zookeeper: 集群管理工具, 主要服务于…...

python中pandas模块数据处理小案例
内容目录1. 添加随机日期2. 聚合求和3.聚合求和排序4. 聚合求和排序取前十5. 聚合取极值6. 重新赋值7. 按条件赋值pandas作为数据处理的得力工具,简便了数据开发过程,之前串联了pandas的使用方法,现在用几个小案例巩固一下常用的pandas方法。…...

从 X 入门Pytorch——Tensor的自动微分、计算图,常见的with torch.no_grad()机制
这里写目录标题1 Pytorch计算图和自动微分2 将单个数据从计算图中剥离 .detach3 使用with torch.go_grad(): 包含的代码段不会计算微分1 Pytorch计算图和自动微分 从功能上理解: 计算图就是类似于数据结构中的无环有向图,Pytorch中的计算图就是为了记录…...

三十七、实战演练之接口自动化平台的文件上传
上传文件功能 上传文件功能主要针对需要测试上传文件的接口。原理是,把要测试上传的文件先上传到测试平台,然后把路径写入 用例中,后台真正测试时再将其进行上传。 一、上传文件模型 在testplans/models.py 模块中编写如下模型:…...