Mybatis插入

Mybatis 注解开发 + 动态SQL Hello 大家好我是橙子同学,今天分享注解Mybatis注解开发+动态sql目录每文一铺垫(今天有小插曲哦)注解开发添加?@Insert删除?@Delete查询?@Select修改?@Update实现结果集封装??@Result???实现一对一结果集封装?@one???实现多对多结果集封装 @Many ?动态SQL???标签? ???标签???标签???标签???标签?收尾先说一个小插曲,因为 橙子同学确实是快要找实习了,这几天宅在家就想着试试水,毕竟没接触过,也不知道这个圈子的包容性强不强,今天早晨可能 阅读详情

一、插入不重复字段

传递参数:mybatis 传递参数的7种方法 - 苍青浪 - 博客园

增加判断条件:MyBatis中使用添加判断进行查询 - lszan - 博客园

详解:mybatis —— 动态sql之if条件判断各种使用方式 - sumlen - 博客园

依赖

<dependency>
     <groupId>org.mybatis.spring.boot</groupId>
     <artifactId>mybatis-spring-boot-starter</artifactId>
     <version>3.0.3</version>
</dependency>

对应关系

gt>
gte>=
lt< (直接使用会报错)
lte<= (直接使用会报错)
eq==
neq!=

例1:

 <if test='id != null and id gt 28'></if>

二、插入重复字段

1、ON DUPLICATE KEY UPDATE

ON DUPLICATE KEY UPDATE为Mysql特有语法

用法

 <insert id="addCimiss">
         insert into cultivate.data_cimiss_hour(Station_ID_C, Datetime, PRE_1h, TEM)
         values
         <foreach item="item" collection="list" separator=",">
             <if test="item.TEM lt 9000">
                 (#{item.Station_ID_C},#{item.Datetime},#{item.PRE_1h},#{item.TEM})
             </if>
             <if test="item.TEM gt 9000">
                 (#{item.Station_ID_C},#{item.Datetime},#{item.PRE_1h},0)
             </if>
         </foreach>
         ON DUPLICATE KEY UPDATE
         Station_ID_C = VALUES(Station_ID_C),
         Datetime = VALUES(Datetime)
 </insert>

2、replace into

replace into 首先尝试插入数据到表中,

  • 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。

  • 否则,直接插入新数据。

要注意的是:插入数据的表必须有主键或者是唯一索引。否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。

MyBatis批量插入的五种方式整理 目录一:预备工作1:pom依赖:2:配置yml文件3:公用的User类:二、不同的实现方法1:MyBatis利用For循环批量插入(1)、编写UserService服务类,测试一万条数据耗时情况(2)、编写UserMapper接口(3)、编写UserMapper.xml文件(4)、进行单元测试(5)、结果输出2:MyBatis的手动批量提交(1)、其他保持不变,Service层作稍微的变化(2)、结果输出3:MyBatis以集合方式批量新增(推荐)(1)、编写UserService服务类(2)、编写User 阅读详情

相关推荐

Mybatis插入大量数据效率对比:foreach插入、SqlSession批量插入、sql插入

sql插入的效率最高,sqlsession次之,mybatis框架foreach插入效率最低。执行效率echarts图:来源:blog.youkuaiyun.com/chenping1993/自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

2401_84048034的博客 1078

Mybatis配置新增与更新自动注入字段

步骤一: 在实体类的字段上添加注解 @TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT_UPDATE) @TableField(fill = FieldFill.UPDATE) 步骤二: 自定义类实现 MetaObjectHandler (在类上加@Component注解,目的是在启动时能让类扫描加载) ...

qq_42811766的博客 1842

射频指纹识别技术:原理、应用与深度学习实现

射频指纹识别(RFFI)是一种基于硬件特征的设备身份认证技术,通过分析无线设备发射信号中的独特硬件特征实现设备识别。其核心原理源于发射器硬件电路的非线性特性,如功率放大器的相位噪声和混频器的非线性失真,这些特征具有难以伪造的特点。在物联网和边缘计算场景中,RFFI技术展现出独特优势,尤其在智能家居和工业物联网中,能有效防止非法接入和设备伪造。深度学习方法的引入进一步提升了RFFI的性能,通过自动特征提取和端到端优化,显著提高了识别准确率。本文详细探讨了RFFI的技术原理、应用场景及实现方法,为相关领域的研究

weixin_30457465的博客 892

基于Mybatis的应用:数据库表增加一个字段,还要改哪些地方

今天处理一个生产环境报NullPointerException的问题,根据查询的对象,获得对象中的一个字段,结果为空。   报错位置:int partnerCode = servicefeeRecord.getPartnerCode().intValue(); (注:本身这直接取字段不判断是否为空,就获得它的int值。写法本身就有点问题,虽然业务上这个字段一定存在。)   定位问题步...

kman2010的博客 6573

Jenkins Job DSL:用代码管理CI/CD配置的实践指南

Jenkins 是持续集成(CI)领域的经典开源平台,其核心价值在于自动化构建与交付流程。然而传统 UI 配置方式导致配置不可版本化、难以复现、审计困难,严重制约团队规模化协作效率。Job DSL 作为一种声明式配置即代码(IaC)方案,通过 Groovy 脚本驱动 Jenkins 内部 API,实现 Job、View、Folder 等资源的程序化创建与维护,天然支持 Git 版本控制、权限审计与环境一致性保障。它不替代 Pipeline,而是与其协同构成‘流程定义’与‘基础设施定义’双轨体系,显著提升 C

weixin_33744141的博客 520

Windows安装ros2(Jazzy版本+win10/win11)-1.配置windows终端

更高版本的terminal可能设置里更加丰富, 有默认以管理员身份启动的选项等,可自行配置。打开微软应用商店, 在其中搜索并下载 Terminal 即可(注意别挂梯子)下载并安装, 安装的位置自行替换,建议别放到系统盘中。点击任务栏中的搜索, 输入store。

weixin_48398592的博客 1454

【Mybatis】动态增加删除字段以及update时遍历map对象

项目中需要动态增加和删除字段,并上传对应的数据,以下是代码记录 1.动态增加、删除字段 mapper.xml <!--修改表结构,增加列--> <update id="AlterTableAddField"> ALTER TABLE population_info ADD (${columnName} VARCHAR(255) NOT NULL DEFAULT '0') </update> <!--修改表结构,删除

DJames23的博客 7882

如何读懂CiteSpace图谱?科研小白必看的节点颜色/年轮/聚类解读手册

本文详细解析CiteSpace图谱的核心视觉元素,包括节点颜色、年轮和聚类标识,帮助科研人员准确解读数据分析结果。通过生物医学案例展示如何从图谱中识别关键文献和研究趋势,提供五步系统解读法和常见错误规避策略,助力科研小白快速掌握文献计量分析技巧。

weixin_29179311的博客 319

Mybatis新增数据,存在就更新,不存在就添加,Mysql避免重复插入数据的4种方式

insertignore into 即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条数据时,MySQL数据库会首先检索已有数据

蓝天 1万+

不到200块!手把手教你用ZYNQ7010和AD9363攒一台自己的开源SDR硬件(附BOM清单)

本文详细介绍了如何用不到200元的预算,基于ZYNQ7010 FPGA和AD9363射频芯片打造一台功能完备的开源SDR硬件平台。从核心组件选型、PCB设计到焊接调试,提供全流程实战指南,特别适合预算有限的硬件爱好者和创客群体探索无线通信世界。

weixin_26854829的博客 484

【用unity实现100个游戏之7】实现一个类《杀戮尖塔》的卡牌回合制游戏(附项目源码)

【用unity实现100个游戏之7】实现一个类《杀戮尖塔》的卡牌回合制游戏(附项目源码)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1万+

Mybatis批量插入的四种方式

测试结果还是显而易见的,循环插入>批量插入>BatchType插入>JDBC批量插入

一零贰肆的博客 4万+

远程声控系统(MATLAB代码见优快云资源)

远程声控系统技术报告 一、题目要求 实现一个远程声音控制系统。首先采集不同的语音指示信号,进行适当压缩;然后通过噪声信道实现远程传输,远端接收后再通过适当计算识别出是何指示,最后送入一个处于未知状态、但能控/能观的控制系统,完成不同的控制动作。 二、问题分解与解决思路 2.1 系统设计 实验中以汉语数字语音1~9作为指令,数字语音“1”代表一号指令,数字语音“2”代表二号指令,依次类推。发送端发出语音“1”,发送端对应的数字语音文件为“1b.wav”,通过信源编码对语音进行压缩编码,然后进行信道编码并进行基

业精于勤,荒于嬉 5736

Mybatis 批量插入

insert, update 和 delete 前文我们说到了select标签,以及一些复杂查询的处理。本文我们主要讨论一下Mybatis的批量插入操作。在这之前,我们还是得先了解insert, update 和 delete标签。 <insert id="insertAuthor" parameterType="domain.blog.Author" flushCache="true" statementType="PREPARED" keyProperty="" keyCo

这个需求,做不了 1万+

R 语言 ggplot2 绘制精美高级全球地图

在本教程中,我们将学习如何使用R语言和ggplot2包绘制精美高级地图。ggplot2是一个功能强大的数据可视化包,它可以让我们创建漂亮、交互式的地图。我们将使用R中的一些其他包来处理地理空间数据,以便与ggplot2无缝协作。

Mrrunsen的博客 1867

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Mybatis批量插入大量数据最优方式

mybatis

blueheartstone的博客 3万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

MyBatis 批量插入数据优化

最近在项目上遇到了批量插入的场景问题,由于每次需要插入超过 10w+ 的数据量并且字段也蛮多的导致如果使用循环单次插入的方式插入数据插入的效率不高。相信读者们在实际开发中也遇到过这样类似的场景,那么批量插入如何实现呢?其实我也是一知半解,之前只见过别人博客上的批量插入实现,对于实际优化上的细节以及优化的程度并不了解。所以正好借此机会,在这里认真地把批量插入的实现及优化过程实操一遍并记录下来,有兴趣的读者们可以接着往下观看,有不对的地方还希望能在评论里指出来。

weixin_43102784的博客 2139

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Mybatis批量插入的几种方式

这种方式是我们比较常用的方式,比传统的循环调用xml插入语句要好得多,在MySql的文档中也提到过这个,如果要优化插入速度时,可以将许多小型操作组合到一个大型操作中。在我们的项目中,会不停地使用批量插入这个方法,而因为MyBatis对于含有的语句(即包含元素),无法采用缓存,所以在每次调用方法时,都会重新解析sql语句。在相关的情况下:将有大量的记录要插入,并且将达到数据库配置的限制(默认情况下,每条语句大约有2000个参数),如果语句本身变得太大,最终可能会出现DB堆栈错误。

qq_58557109的博客 4269

MyBatis批量插入

1、实体类 public class User { private String userId; private String userName; private String userPassword; private String userEmail; public String getUserId() { return userId; } public void setUserId(String userId) {

走在bug的路上 2093

mybatis 插入大量数据效率对比,foreach插入、SqlSession批量插入、sql插入

新增xml执行效率测试:xml执行时间比sql稍慢一些,50000条数据插入时间约为2000毫秒左右,平均时间是sql的2倍左右。sql插入的效率最高,sqlsession次之,mybatis框架foreach插入效率最低。2 使用mybatis-plus框架的insert方法,for循环,每次执行一次插入。使用mybatis插入数据执行效率对比,对比三种方式(测试数据库为MySQL),1 使用 SqlSessionFactory,每一批数据执行一次提交(3 使用ibatis,纯sql插入。

龙池小生 4万+

Mybatis 批量插入数据 SQL

上面代码中在 SQL 语句的最外层使用了 for 循环,好处是将 List 类型的集合传递来写入数据时可以有的是新增有的是修改,例如3行数据,第一三行由于主键字段对应属性 sid 被设置为 NULL ,会向数据库中新增行,第二行数据设置了 sid ,并且该值在数据库中有对应行,那么会修改数据库中的该行上的数据。通过在 java 中测试,发现上面的语句新增一行成功后会返回1,修改成功后会返回2(这里有疑惑,如果清楚原因的麻烦跟帖科普下)。这种写法适合插入数据的项不变,

zzhongcy的专栏 4646

MyBatis批量插入的五种方式

2:配置yml文件 3:公用的User类: 二、不同的实现方法 1:MyBatis利用For循环批量插入 (1)、编写UserService服务类,测试一万条数据耗时情况 (2)、编写UserMapper接口 (3)、编写UserMapper.xml文件 (4)、进行单元测试 (5)、结果输出 一万条数据总耗时:26348ms (2)、结果输出 一万条数据总耗时:24516ms (2)、编写UserMapper接口 (3)、编写UserMapper.xml文件 (4)、输出结果 一万条数据总

justleavel的博客 8077

MyBatis的五种批量插入

。

weixin_43189971的博客 5122

MyBatis 批量插入数据的 3 种方法

批量插入功能是我们日常工作中比较常见的业务功能之一,之前我也写过一篇关于《MyBatis Plus 批量数据插入功能,yyds!》的文章,但评论区的反馈不是很好,主要有两个问题:第一,对 MyBatis Plus(下文简称 MP)的批量插入功能很多人都有误解,认为 MP 也是使用循环单次插入数据的,所以性能并没有提升;第二,对于原生批量插入的方法其实也是有坑的,但鲜有人知。 所以综合以上情况,磊哥决定再来一个 MyBatis 批量插入的汇总篇,同时对 3 种实现方法做一个性能测试,以及相应的原理分析。

uuuyy_的博客 5999

MyBatis-Plus 批量插入

spring boot+mybatis plus环境,单条插入用的是BaseMapper自带的insert方法 public ApiResult addAnc(Anc anc) { ApiResult result = new ApiResult(); Integer insert = ancMapper.insert(anc); if...

浪丶荡 14万+

Mybatis批量插入问题解决

原文:https://my.oschina.net/zjllovecode/blog/1818716 一、首先对于批量数据的插入有两种解决方案(下面内容只讨论和Mysql交互的情况) 1)for循环调用Dao中的单条插入方法 2)传一个List参数,使用Mybatis的批量插入 (foreach) 对于批量插入它的Mapper看起来向这样 &lt;insert id="addUser" param...

老顽头·进击 2万+
上一篇: 调用第三方接口
下一篇: Linux挂载磁盘
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值