MyBatis ——在java层面对MySQL数据库进行操作

足球运动员数据管理系统(JSP+java+springmvc+mysql+MyBatis) 随着足球运动的专业化和商业化程度不断提高,对运动员的表现进行分析和管理变得越来越重要。一个高效的足球运动员数据管理系统可以帮助教练团队、球探和俱乐部管理层全面了解每位运动员的训练情况、比赛表现、身体状态和其他关键指标。这样的系统可以收集和分析大量数据,提供有价值的洞察,从而帮助提高球队的整体表现和竞争力。JSP技术生成动态的Web页面,将页面展示给用户。用户发送请求:用户通过浏览器或其他客户端向系统发送请求,请求访问特定的页面或执行特定的操作。后端程序接收到请求后,根据请求的类型和参数进行相应的处理。 阅读详情

目录

MyBatis 是一款优秀的 持久层框架,用于简化JDBC(java操作数据库)的开发;

使用MyBatis 查询所有用户数据的过程

Lombok是一个实用的]ava类库,能通过注解的形式 简化 JavaBean的代码

注解:

引入Mybatis的相关依赖,配置Mybatis(数据库连接信息)

编写SQL语句(注解/XML)使用注解的方式编写SQL语句 使用XML映射文件编写SQL语句

使用注解的方式编写SQL语句

1. 编写SQL语句的类 注解

2.测试类 注解

数据库连接池重复使用 一个现有的 数据库连接

预编译 SQL语句

使用XML映射文件编写SQL语句

规范

MyBatisX是一款基于IDEA的快速开发MyBatis 的插件,为效率而生,

使用过程可以通过点击红蓝小鸟实现两个文件之间的切换

动态SQL:随着用户的输入或外部条件的变化而变化的SQL语句,我们称为 动态SQL。

抽取重复的SQL片段


 

  • MyBatis 是一款优秀的 持久层框架,用于简化JDBC(java操作数据库)的开发;


    MyBatis官网 : https://mybatis.org/mybatis-3/zh/index.html
    JDBC:Java语言操作关系型数据库的一套 API,我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动数据库jar包中的实现类
    • 使用MyBatis 查询所有用户数据的过程

      • 准备工作(创建springboot工程、数据库表user、JavaBean类 User)
        简化JavaBean的代码——Lombok是一个实用的]ava类库,能通过注解的形式 简化 JavaBean的代码
        • Lombok是一个实用的]ava类库,能通过注解的形式 简化 JavaBean的代码


          注意事项:Lombok会在编译时,自动生成对应的java代码。我们使用lombok时,还需要安装一个lombok的插件(idea自带)
           
          • 注解:

            • 为了方便,系统将常用的注解合并在一起 ——> @Data —>Data
              包含的注解
              @Getter —> getXxx、@Setter—>setXxx 、@ToString —> tostring()、@EqualsAndHashCode —>equals() + hashcode()
            • @NoArgsConstructor —>无参构造 @AllArgsConstructor —>全参构造
      • 引入Mybatis的相关依赖,配置Mybatis(数据库连接信息)


        application.properties文件配置数据库连接信息
      • 编写SQL语句(注解/XML)
        使用注解的方式编写SQL语句 使用XML映射文件编写SQL语句

        • 使用注解的方式编写SQL语句
          • 1. 编写SQL语句的类 注解

            • 类名前——@Mapper
            • SQL语句——@Select(查找)、@delect(删除)、@update(修改);
          • 2.测试类 注解

            • 类名前——@SpringBootTest
              告诉程序这个是测试类
            • 依赖注入——@Autowired
              得到IOC容器中的对应实现类
            • 测试方法——@Test
              告诉程序这个是测试方法
          • 数据库连接池
            重复使用 一个现有的 数据库连接
            • 特点:
              • 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
              • 它允许应用程序重复使用 一个现有的 数据库连接,而不是 再重新建立一个
              • 释放空闲时间 超过最大空闲时间 的 连接,来避免 因为没有释放连接 而引起的数据库 连接遗漏
            • 数据库连接池和普通连接的区别

              • 1.普通连接:使用时创建,不用时销毁
              • 2.数据库连接池(相当于线程池):使用时,从连接池中获取,用完了再放回连接池; 当用户获得连接,却不使用时,连接池会去检测这个连接,当空闲时间超过最大空闲时间,就会直接释放。
            • 优势:资源重用、 提升系统响应速度、 避免数据库连接遗漏。
            • 标准接口 :DataSource ,由第三方组织实现此接口——Hikari 、Druid


              Hikari (追光者): Springtboot默认使用的数据库连接项目
              ​Druid (德鲁伊): 阿里巴巴开源的数据库连接项目
              • IDEA中新建Springboot工程,默认使用的是Hikari 数据库连接池,如果要使用Druid,需要切换

          • 预编译 SQL语句
            • 1. 设置 SQL中的 参数—— #{...}
              • 参数占位符——#{...}、concat(#{...})、${...}


                常用 #{...} 需要字符串拼接时候使用: concat(#{...}) ${...}:用于参数拼接,但是会存在SQL注入问题,不常用
                • #{...} : 执行SQL时,会将#{...)替换为?,生成预编译SQL,会自动设置参数值。
                  使用时机:参数传递,都使用#{...}
                • concat(#{...}):执行SQL时,会将#{...)替换为?,concat()方法,将参数输入的值作为字符串和左右拼接到一起
                • ${...} : 拼接SQL。直接将参数拼接在SQL语句中,存在SQL注入问题。
                  使用时机:如果对表名、列表进行动态设置时使用,
              • 如果mapper接口方法形参只有一个普通类型的参数,{#..}里面的属性名可以随便写,如: #{id)、#{value}。


                可以在application.properties中,配置“打开mybatis的日志”的代码,并指定输出到控制台,在控制台查看本次数据的转换
                • 优势:性能更高、更安全(防止SQL注入)


                  如果不用参数,每一次都需要创建新的删除语句;使用参数只需要创建一次删除语句
                  • 缓存:SQL语法解析检查+优化SQL+编译SQL 三合一
                    执行过程:
                    ​1.执行第一条语句,按顺序依次执行;
                    ​2.执行第二条时候,会先检查 缓存 里面是否包含这条语句,
                    ​ 2.1如果包含,直接执行;
                    2.2如果不包含,再次按顺序依次执行
                  • SQL注入是通过操作输入的数据来修改事先定义好的SQL语句,以达到执行代码对服务器进行攻击的方法。

              • 如果mapper接口方法形参 有多个普通类型的 参数,{#..}里面的属性名需要一一对应,一般会封装成一个JavaBean对象,这就需要参数跟JavaBean中的变量名一一对应。


                属性值也是针对数据库中数据表的命名进行定义,将带下划线的写成小驼峰形式
                 
              • 主键返回——@Options(keyProperty="id",useGeneratedkeys = true);


                会自动生成主键值,并赋值给 emp对象的 id变量
            • 2.数据封装——判断JavaBean类中的变量名和数据库是否一致,一致就将数据赋值到数据库(也叫映射)。


              这也是为什么要将JavaBean类中的变量和数据库表头变量名一致,但是多个单词语句,在SQL语句通过“_”下划线连接,java中设置为小驼峰模式。所以两个变量名不一样,这就需要在 application.properties配置文件中 开启 mybatis的驼峰命名自动映射开关
              • 实体类属性名 和 数据库表查询返回的字段名一致,mybatis会自动封装
              • 如果实体类属性名 和 数据库表查询返回的字段名不一致,不能自动封装,
              • 开启mybatis的驼峰命名自动映射开关a_column —>aCloumn
                application.properties文件中:mybatis.configuration.map-underscore-to-camel-case-true
        • 使用XML映射文件编写SQL语句
          • 规范

            • XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)
            • XML映射文件的namespace属性为Mapper接口全限定名一致。
            • XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。
          • MyBatisX是一款基于IDEA的快速开发MyBatis 的插件,为效率而生,

            • 使用过程
              可以通过点击红蓝小鸟实现两个文件之间的切换
              • 第一步:在java文件中设置 方法,传递参数,确定返回值

              • 第一步:创建同包同名的xml文件。

              • 第二步:设置namespace属性

              • 第三步:设置sql语句的id与Mapper 接口中的方法名一致,并保持返回类型一致。
                id 设为方法名 list; resultType设置为 方法的返回值——单条记录所封装的类型
            • 动态SQL:随着用户的输入或外部条件的变化而变化的SQL语句,我们称为 动态SQL。
              • if : 判断条件,成立就会拼接SQL语句

              • <where> 标签:子元素有内容情况下,在行首插入 where语句,自动去除 子句的开头 and 或者 or


                where 语句 替换成 <where> 标签
              • <set> 标签:子元素有内容情况下,在行首插入 set语句,自动省略额外的 符号(例如 “ ,”),用于update 语句中


                set语句 替换成 <set> 标签
              • <foreach>标签 : 遍历集合。


                collection :集合名称; item :遍历出来的元素/项; separator:元素之间的分隔符 open:遍历开始前拼接 close:遍历结束后拼接
            • 抽取重复的SQL片段


              相当于java中抽取重复的代码定义一个方法一样
              • <sql>:定义可重用的 SQL片段。
              • <include>:通过属性refid,指定包含的sql片段。
MySQL 和 MyBatis:数据库与持久层框架的完美结合 MySQL是一个开源的关系型数据库管理系统(RDBMS),广泛应用于 Web 应用程序中。高性能:MySQL 支持高效的查询和数据操作。易用性:MySQL 提供了简单易用的 SQL 接口。可扩展性:MySQL 支持大规模数据存储和高并发访问。开源免费:MySQL 是开源软件,可以免费使用。在项目中,MySQL 通常用于存储和管理应用程序的核心数据,例如用户信息、订单信息等。MyBatis是一个优秀的持久层框架,用于简化 Java 应用程序与数据库的交互。灵活性。 阅读详情

相关推荐

Java 与 MyBatis 开发中 MySQL Zero Date 错误剖析与应对

在 Java 与 MyBatis 开发中,“Zero Date” 错误是 MySQL 数据库应用开发过程中常见的问题,它源于数据录入的不规范、MyBatis 配置的不合理以及数据库配置的变化。通过完善数据录入的校验逻辑、优化 MyBatis 配置、合理调整数据库配置以及清理现有无效数据等方法,能够有效地解决这一问题。在实际开发中,要养成良好的开发习惯,严格把控数据质量,从而减少此类错误的发生,确保基于 Java 和 MyBatis 的数据库应用稳定、高效地运行。

程序猿_三产 1449

【JavaWeb】后端(MySQL+Mybatis)

数据库:DataBase ( DB),是存储和管理数据的仓库。数据库管理系统:DataBase Management System (DBMS),操纵和管理数据库的大型软件。SQL:Structured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

qq_44544908的博客 1773

MyBatis在MySQL中的CRUD操作全解析

本文还有配套的精品资源,点击获取 简介:本文详细介绍了如何在SSM(Spring、SpringMVC、MyBatis)框架下配置MyBatis连接MySQL数据库,并实现数据的增、删、改、查(CRUD)操作。内容包括环境配置、依赖添加、核心配置文件设置、Mapper接口和映射文件的定义以及实际操作方法的实现。 1. MyBatis框架简介 MyBatis 是...

weixin_28888459的博客 1116

【Mybatis】使用mybatis框架连接mysql数据库详细步骤

和我之前写的通过导入jdbc驱动jar包来连接mysql数据库而言,用mybatis来说可以有很多好处呀,首先mybatis,就是对jdbc的优化方案对吧,,jdbc的硬编码和一些繁琐的操作在使用mybatis的时候我就彻底抛掷脑后了哈哈哈。同时,mybatis在国内使用的持久层框架中占比也很高啊所以对mybatis的学习,对我们也很有用处嘞。

m0_59099304的博客 2万+

【STM32】STM32F103C8T6多串口通信实战:3个USART并行收发与中断处理优化

本文详细介绍了STM32F103C8T6多串口通信的实战技巧,包括3个USART模块的并行配置、中断优先级优化及数据收发冲突规避策略。通过硬件初始化步骤、中断优先级设置和双缓冲区实现等方案,有效解决了多串口通信中的数据错乱问题,提升系统稳定性与效率。

weixin_42526417的博客 168

三、Crowd与JIRA、Confluence用户集成并SSO单点登录

补充说明: 通过此方法集成后,用户、组以及用户和组的关系都在Crowd系统中存储,但各个系统的权限仍由各系统控制,也可在JIRA和Confluence中添加和删除用户。 在做步骤4和步骤5的时候,要特别小心,确保当前系统的超级权限用户(一般为admin,具体看当前系统的全局权限配置)和组以及它们的关系已经在Crowd中同样存在了,才可切换并禁用当前系统的内部用户目录,否则可能造成权限丢失等严重问题(因为禁用了内部用户目录,而Crowd中又不存在这个超级权限用户和组或它们的关系,所以权限就丢失了) 维护示例

weixin_38621072的博客 2984

MySQL+Mybatis

MySQL主要分为Server层和引擎层,Server层主要包括连接器、查询缓存、分析器、优化器、执行器,同时还有一个日志模块(binlog),这个日志模块所有执行引擎都可以共用,redolog只有InnoDB有。引擎层是插件式的,目前主要包括,MyISAM,InnoDB,Memory等。查询语句的执行流程如下权限校验(如果命中缓存)--->查询缓存--->分析器--->优化器--->权限校验--->执行器--->引擎更新语句执行流程如下分析器---->权限校验---->执行器--->引擎---re。...

m0_59347746的博客 3017

SAP MM采购合同创建全解析:ME31K操作与后台逻辑

在SAP ERP的物料管理模块中,采购合同作为框架协议的核心,定义了企业与供应商之间的长期供货关系。它与采购订单不同,合同不直接产生收货或发票,而是为后续采购订单提供数据源。创建合同(事务码ME31K)时,需要区分数量合同与金额合同,并维护抬头、行项目、有效期、价格条件和税码等关键信息。SAP通过源确定机制在创建采购订单时自动匹配合同,同时审批策略、编码范围和输出类型也会影响合同的实际可用性。掌握合同创建逻辑,能有效解决采购订单无法带出合同、审批未触发、价格缺失等高频问题。从ME31K实操出发,系统梳理采购

weixin_30000735的博客 196

【2023最新JavaWeb】Mybatis配置与操作MySQL(二)

同过上一篇的Maven学习,本次希望能够使用Maven管理项目;要求能够创建Mybatis工具类、核心配置文件的配置;最后能够通过Mybatis操作mysql数据库。

weixin_51730356的博客 1119

openEuler系统下安装Google Chrome浏览器全攻略(附依赖问题解决方案)

本文详细介绍了在openEuler系统上安装Google Chrome浏览器的完整指南,包括环境准备、多种安装方式、依赖问题解决方案及性能优化技巧。针对openEuler特有的软件生态和依赖管理机制,提供了实用的命令和配置方法,帮助用户克服安装过程中的常见障碍,实现流畅的Chrome使用体验。

hadoop5ranger的博客 1148

5nm制程的CV5芯片实测:用它给无人机做8K拍摄和实时避障,功耗和性能到底怎么样?

本文深度评测了5nm制程的CV5芯片在无人机8K拍摄和实时避障中的表现。通过实测数据展示了CV5的异构计算架构、8K视频编码性能和CVflow®AI引擎的加速效果,同时提供了开发中的优化技巧和散热建议,为无人机开发者提供了实用的参考。

weixin_30861797的博客 358

Java中使用MyBatis框架连接和操作MySQL数据库

在上述示例的映射文件中,`<insert>`、`<update>`、`<delete>`、`<select>`等标签分别对应着插入、更新、删除、查询等数据库操作。在上述示例代码中,通过`sqlSessionFactory.openSession()`方法创建了一个`SqlSession`对象,并通过这个对象创建了一个`UserDAOImpl`实例。其中,`driver`指定了MySQL数据库的驱动类,`url`指定了数据库的URL,`username`和`password`指定了连接数据库的用户名和密码。

vipfanxu的博客 1651

UI渲染顺序:合批为何被拆碎?

在 Hierarchy 中,避免出现:Image(列表1) → Text(列表1) → 特效 → Image(列表2) → Text(列表2)…若可行,在逻辑上把布局组织成“同类元素集中”:例如:列表行中,Image 集中、Text 集中;或者接受 Text 本身就拆出一批,关键是不要在 Text 中间再插入别的材质。现实中不一定能做到完美的“所有 Image 连在一起”,但你会有一个意识:同一 Canvas 内,如果你把不同材质的元素交错穿插,

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 84

SQL中使用sum()应该程序报错:java.math.BigDecimal cannot be cast to java.lang.Integer

SQL中使用sum函数应该程序报错1、遇到的问题2、原因分析3、解决方案3.1 从数据库层面解决该问题3.2 从应用程序层面解决该问题 1、遇到的问题 本文遇到的问题是在使用Java搭配mybatis框架操作MySQL时产生的,在mybatis的xml文件中写有如下SQL语句(片段): <select id="selectCourtCaseNumStatistics" resultType="hashmap"> select sum(gyxx.n_xss) xss

欧阳方超的专栏 3028

实战篇(七):使用Processing和PixelFlow库创建交互式流体太极动画

类:用于配置流体运动的参数,比如圆的位置、半径、运动的角度和速度以及颜色等。类:实现了接口,用于更新流体物理仿真的状态,同时整合声音输入作为流体动态变化的一部分。my_update方法:是流体物理仿真更新的核心,它计算流体粒子的速度和位置,并且将这些数据传递给流体库来模拟流动。现在,让我们进一步分析并解释每个部分的作用以及如何操作。float x;// 圆心位置xfloat y;// 圆心位置y// 半径// 是否是顺时针// 圆周运动,弧上的点位置,以及上一帧的点位置// 角度。

帅小柏的博客 1633

太美了!现代女主jk海军风穿搭四视图

哪个女孩子初高中的时候不买几套JK衣服啊,穿上完全是青春女孩。那还愣着干啥,不得也给你的漫剧女主也穿上!直接就是分享三套JK穿搭,红棕双麻花辫配经典水手服,是那种乖乖巧巧的元气学妹;粉色羊毛卷双马尾,搭配蝴蝶结和小挎包甜度直接拉满;还有灰棕色侧麻花辫,浅蓝上衣配黑色百褶裙,温柔里又带点小酷。下面把这三套角色的完整提示词分享出来,喜欢哪套就拿去参考,改改发型和配色,还能继续解锁新角色!

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 51

java math.sum,SQL中使用sum()应该程序报错:java.math.BigDecimal cannot be cast to java.lang.Integer...

1、遇到的问题本文遇到的问题是在使用Java搭配mybatis框架操作MySQL时产生的,在mybatis的xml文件中写有如下SQL语句(片段):selectsum(gyxx.n_xss) xss,sum(gyxx.n_jcs) jcs,sum(gyxx.n_yjs) yjs,sum(gyxx.n_wjs) wjsfrom gyxxmapper接口如下:Map selectCourtCaseNu...

weixin_34637293的博客 628

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SpringBoot结合Mybatis读取MySQL数据库

Select 查询id属性是与 Java 接口中方法相对应的标识符。属性定义了传递给 SQL 语句的参数类型。resultMap属性引用了结果映射。</select>Insert 插入</insert>Update 更新</update>Delete 删除</delete>

weixin_65702315的博客 2479

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MyBatis配置以及连接mysql数据库

一、新建java web项目 Finish即可。 二、导入jar包 jar包下载地址:https://mvnrepository.com 导入MyBatis的jar包 spring的所有jar包下载地址:https://github.com/joytom/spring_jar spring+mybatis的jar包下载 mysql驱动下载 阿里巴巴数据库连接池jar包下载 以上j...

光头强的博客 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【Java - 框架 - Mybatis】(01) 普通Java项目使用Mybatis操作Mysql - 快速上手

普通Java项目使用Mybatis操作Mysql - 快速上手

SUNxRUN的博客 1317

【MyBatis】MyBatis 操作数据库

在应用分层学习时, 我们了解到web应用程序⼀般分为三层,即:Controller、Service、Dao . 之前的案例中,请求流程如下: 浏览器发起请求, 先请求Controller, Controller接收到请求之后, 调用Service进行业务逻辑处理, Service再调用Dao, 但是Dao层的数据是Mock的, 真实的数据应该从数据库中读取. 我们学习MySQL数据库时,已经学习了JDBC来操作数据库, 但是JDBC操作太复杂了JDBC 操作示例回顾创建数据库连接池 DataSource。

2403_87459748的博客 2227

Java SpringBoot+Vue3+MyBatis 大学生体测数据管理系统系统源码|前后端分离+MySQL数据库

Java SpringBoot+Vue3+MyBatis 大学生体测数据管理系统系统源码|前后端分离+MySQL数据库,拿走直接用(附源码,数据库,视频,可提供说明文档(通过*AIGC*)*技术包括:MySQL、VueJS、ElementUI、(Python或者Java或者.NET)等等*功能如图所示。可以滴我获取详细的视频介绍

a1694619497的博客 703

MyBatis操作数据库

(1)MyBatis是⼀款优秀的框架,⽤于简化JDBC的开发。--JDBC(Java DataBase Connectivity),即Java数据库连接。(2)MyBatis本是 Apache的⼀个开源项⽬iBatis,2010年这个项⽬由apache迁移到了google code,并且改名为MyBatis。2013年11⽉迁移到Github。(所以引包的时候ibatis和mybatis是一回事)(3)持久层:指的就是持久化操作的层, 通常指数据访问层(dao), 是⽤来操作数据库的.

m0_47017197的博客 1260

Java中使用MyBatis Plus连接和操作MySQL数据库

在实际应用中,我们可以根据具体的需求来选择和配置MyBatis Plus的功能,以满足项目的需求。在编写Mapper接口时,我们可以使用@Mapper注解来标识这是一个Mapper接口,并通过@Select、@Insert、@Update、@Delete等注解来定义具体的数据库操作方法。通过在实体类中定义与表对应的字段和属性,我们可以通过MyBatis Plus来进行数据库的增删改查操作。通过在实体类的字段上使用@TableField注解,我们可以将Java实体类中的字段与数据库表中的列进行映射。

vipfanxu的博客 1386

【Java EE】MyBatis使用注解操作数据库

MyBatis使用注解操作数据库,参数传递,MyBatis使用注解实现增删改查,结果映射,开启驼峰命名(推荐)

ZXT的博客 1655

IDEA(maven)+mybatis+mysql实现数据库查询操作

最近在学习使用ssm框架,整合过程比较麻烦,先把基础使用部分整理出来,这篇文章只是使用了mybatis连接数据库进行查询操作,主要来熟悉mybatis和数据库部分的操作。步骤如下:1.新建maven工程2.添加必要依赖3. 连接数据库,编写实体类4. 编写Mapper.xml(sql语句)5.编写数据库配置文件6.编写测试类。

城南蝈蝈 5349
上一篇: 对HashMap的理解
下一篇: 记录日志中logback和log4j2不能共存的问题
new2MySQL
博客等级 码龄5年 255粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值