myBatis Idea插件安装与使用指南

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本文详细介绍了myBatis Idea插件的安装步骤和使用方法,旨在提升开发人员使用myBatis框架的效率。插件包括代码生成、SQL提示、自动完成、Mapper XML文件与Java接口关联等功能。步骤包括下载压缩包文件、解压、在IntelliJ IDEA中上传插件、安装并重启IDE以加载插件。插件使用包括自动生成代码、SQL提示、接口与XML关联、注释支持和动态SQL高亮等功能,能够显著提高开发效率,减少编写重复代码的时间,并提升代码可读性。
myBatis idea插件下载资源

1. myBatis Idea插件概述

1.1 插件简介

myBatis Idea 插件是专为 IntelliJ IDEA 开发的一款旨在简化 myBatis 开发流程的增强工具。它通过提供代码生成功能、SQL 提示和自动完成、Mapper XML 与 Java 接口的关联等特性,帮助开发者更高效、更安全地处理持久层代码。无论对于初学者还是经验丰富的开发者,这款插件都是提高生产力和代码质量的利器。

1.2 功能亮点

  • 代码生成功能 :插件能够基于数据库表结构快速生成 myBatis 的实体类、Mapper 接口以及对应的 XML 文件。
  • SQL 提示与自动完成 :在编写 SQL 语句时,插件可提供上下文相关的智能提示,支持动态 SQL 标签如 foreach、if 的自动补全。
  • 动态代理机制 :通过实现 myBatis 的动态代理机制,插件能够在执行数据库操作时,自动关联 Java 接口与相应的 Mapper XML 文件。
  • 代码高亮与注释模板 :提供自定义注释模板功能,以及友好的代码高亮设置,以提高代码的可读性。

在后续章节中,我们将详细探讨如何安装并配置 myBatis Idea 插件,以及如何利用其强大的功能来优化你的 myBatis 开发体验。

2. 插件安装详细步骤

安装一个插件可能看起来是一个简单的任务,但对于提升开发效率和工作流程的优化来说,这是一个关键步骤。在本章节中,我们会详细讨论如何通过不同的方法安装myBatis Idea插件。无论你是通过JetBrains插件市场进行安装,还是选择手动下载安装包,本章节都将为你提供清晰的指导。

2.1 插件市场获取方式

2.1.1 登录JetBrains插件市场

首先,你需要访问JetBrains的官方插件市场,这是大多数IntelliJ IDEA用户获取插件的地方。以下是在浏览器中访问JetBrains插件市场的步骤:

  1. 打开你的浏览器。
  2. 在地址栏输入 JetBrains Plugin Repository
  3. 按下回车键进入插件市场。
  4. 你可以通过上方的搜索栏搜索特定的插件,例如“myBatis”。

2.1.2 搜索并选择myBatis Idea插件

在插件市场成功登录后,你可以搜索并选择myBatis Idea插件进行安装。请按以下步骤操作:

  1. 在插件市场搜索框中输入“myBatis”进行搜索。
  2. 在搜索结果中找到“myBatis Idea”插件。
  3. 点击插件,进入插件详情页面。
  4. 在详情页面中点击“Install”按钮进行安装。

在安装过程中,IntelliJ IDEA会自动重启以完成安装流程。重启完成后,myBatis Idea插件就安装成功了,你可以开始使用它提供的功能了。

2.2 手动下载安装方法

虽然从插件市场直接安装是最简单的方式,但在某些情况下,手动下载安装包并进行安装也是很有用的。以下是如何手动下载并安装myBatis Idea插件的步骤:

2.2.1 访问插件官方网站下载安装包

首先,你需要访问myBatis Idea插件的官方网站,通常,官方网站会提供最新版本的下载链接。按以下步骤进行:

  1. 打开你的浏览器。
  2. 访问myBatis Idea插件的官方网站或信任的第三方插件网站。
  3. 下载最新版本的安装包到本地存储设备。

2.2.2 在IDEA中通过磁盘安装插件

接下来,在IntelliJ IDEA中通过磁盘安装你下载的插件安装包。具体步骤如下:

  1. 打开IntelliJ IDEA。
  2. 转到“File”菜单,然后选择“Settings”(在macOS上是“IntelliJ IDEA”菜单下的“Preferences”)。
  3. 在设置窗口中,选择“Plugins”。
  4. 在“Plugins”页面的右下角,点击“Install Plugin from Disk…”。
  5. 浏览到你下载的插件安装包位置,选择它,然后点击“OK”进行安装。
  6. IntelliJ IDEA会提示你重启IDE以完成安装。

2.3 插件的启用与配置

一旦插件安装完成,你需要启用它并进行一些必要的配置才能开始使用。这包括启用插件及其所需组件,并配置插件以适应你的项目环境。

2.3.1 启用插件及其所需组件

要在IntelliJ IDEA中启用myBatis Idea插件,请按照以下步骤操作:

  1. 打开IntelliJ IDEA。
  2. 转到“File”菜单,然后选择“Settings”(在macOS上是“IntelliJ IDEA”菜单下的“Preferences”)。
  3. 在设置窗口中,选择“Plugins”。
  4. 在插件列表中找到“myBatis Idea”插件,确保复选框被勾选,这将启用该插件。
  5. 如果需要的话,启用相关的依赖插件。

2.3.2 配置插件以适应项目环境

为了使插件能够在你的项目中顺利工作,你可能需要做一些配置:

  1. 确认你的项目数据库连接已经设置并且可以使用。
  2. 在项目中打开或者创建一个myBatis配置文件(通常是 mybatis-config.xml )。
  3. 根据你的项目需求,调整插件的配置选项,比如选择特定的数据库方言或者配置包别名等。

通过这些步骤,myBatis Idea插件已经被正确安装并且配置完成,你可以开始使用它提供的各种便捷功能来提升你的开发体验了。在后续的章节中,我们将深入了解这些功能,如代码生成、SQL提示和自动完成等。

3. 代码生成功能介绍

3.1 逆向工程功能

3.1.1 数据库表到实体类的映射

逆向工程功能是myBatis Idea插件的杀手锏之一,它大大减轻了开发者的负担。通过逆向工程,开发者可以将数据库中的表直接映射成Java实体类,省去了繁琐的手动编码工作。这个功能对于新项目的起始阶段尤其有用,可以迅速生成项目的底层模型代码。

首先,需要在IDEA中配置好数据库连接信息。接下来,在myBatis插件的逆向工程界面中,指定源数据库配置,并选择需要映射的数据库表。插件会根据数据库表的结构,如字段名和字段类型,自动生成与之对应的Java实体类代码。开发者可以针对每个表自定义包名和生成策略,如是否添加序列化、是否使用Lombok等。

生成的实体类将遵循Java Bean的规范,包含了所有字段的getter和setter方法,同时也可能包含用于构建复杂对象的Builder模式代码。例如:

public class User implements Serializable {
    private Integer id;
    private String name;
    private Date birthday;
    // Getters and setters...
}

3.1.2 实体类到Mapper接口的映射

逆向工程不仅仅可以生成实体类,它还能根据实体类生成对应的Mapper接口。这些接口会包含基本的CRUD操作,每一个操作都对应一个数据库操作,极大简化了后续的开发工作。

例如,对于上文提到的 User 实体类,逆向工程可以生成如下接口:

public interface UserMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer id);

    List<User> selectAll();

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);
}

在这个过程中,myBatis Idea插件会自动识别出数据库表的主键、自增字段等信息,并在生成的SQL映射文件中正确地使用它们。开发者可以进一步自定义生成的接口和方法,以满足特定的业务需求。

通过这种方式,开发者可以快速搭建起项目的数据库操作层,大大加快了开发进度。同时,这也保证了代码的一致性和规范性,避免了人为的错误和疏漏。

3.2 CRUD操作代码生成

3.2.1 根据数据库表生成增删改查代码

为了进一步提高开发效率,myBatis Idea插件提供了根据数据库表结构直接生成CRUD(增删改查)操作代码的功能。这一功能不仅减少了编码工作量,还降低了因手动编写SQL语句而引起的错误。

在逆向工程的基础上,选择要操作的实体类或表,插件会自动为每个表创建对应的Mapper接口,并在接口中定义基本的CRUD方法。这些方法将通过注解 @Select @Insert @Update @Delete 等与SQL语句关联。

例如,针对 User 表,自动生成的Mapper接口可能包含以下内容:

@Mapper
public interface UserMapper {
    // 其他已定义的方法...
    @Select("SELECT * FROM user WHERE id = #{id}")
    User selectUserById(Integer id);

    @Insert("INSERT INTO user(name, birthday) VALUES(#{name}, #{birthday})")
    int insertUser(User user);
    // 更新和删除操作...
}

3.2.2 代码生成的自定义配置

虽然myBatis Idea插件提供了强大的自动代码生成功能,但在实际使用中,开发者可能需要根据自己的需求进行一些自定义配置。插件支持在生成代码之前调整模板,允许添加额外的方法注解、注释以及对生成策略的微调。

自定义配置通常在插件的设置界面中进行,开发者可以选择默认的代码模板或使用自己的模板。例如,对于自定义查询方法,可以指定返回值类型、传入参数类型、查询结果的封装方式等。这些配置帮助开发者更好地控制生成的代码,以适应特定的业务逻辑或性能要求。

具体操作中,可能需要根据实际项目的需求来设置,例如:

  • 修改方法名称以符合特定的命名规则;
  • 添加特定的参数校验或业务逻辑处理代码;
  • 调整生成的SQL语句,以适应复杂的查询或更新需求。

通过这些自定义配置,虽然可能稍微增加了配置的工作量,但能够让生成的代码更加贴合项目实际,有效地提高了代码的可用性和维护性。

开发者通过合理利用这些功能,可以快速搭建起项目的底层框架,然后专注于业务逻辑的实现。而myBatis Idea插件的代码生成器,不仅仅是一个工具,更是一个能够加速开发流程、提高代码质量的得力助手。

4. SQL提示和自动完成

在现代的集成开发环境中,智能的代码提示和自动完成功能已经成为提高开发效率的标准配置。对于使用myBatis进行Java开发的程序员来说,myBatis Idea插件的SQL提示和自动完成功能更是大大提高了编码速度和准确性。让我们详细探讨这一功能,并深入理解它是如何工作的。

4.1 SQL语言的智能提示

4.1.1 根据上下文智能提示SQL语句

myBatis Idea插件提供了一个强大的功能,即在编写SQL语句时,根据上下文自动提示可能的关键词、字段名、表名等。这一功能极大地减少了记忆负担,帮助开发者快速找到正确的SQL语法和数据模型元素。

SELECT * FROM ${table_name}

在编写上述SQL查询时,当我们开始输入 ${tab 时,插件会自动提示 table_name ,如果在上下文中已知表名,还会进一步提示具体的表名。这些智能提示是基于你当前的项目数据结构动态生成的,从而确保了提示内容的准确性和适用性。

4.1.2 SQL模板的使用与扩展

myBatis Idea插件允许开发者创建自定义的SQL模板,这些模板可以包含常用SQL片段或整个查询语句,以便在需要时快速插入。自定义模板功能大幅提高了编码效率,并且降低了因重复编写复杂SQL而引起的错误。

通过插件界面,可以将常用的SQL片段定义为一个模板,例如创建一个名为”SelectAll”的模板,其内容为:

SELECT * FROM ${table_name} WHERE ${condition}

在编写SQL时,可以通过插件提供的快捷方式快速插入“SelectAll”模板,并根据当前上下文自动填充 table_name condition

4.2 动态SQL的支持

4.2.1 foreach, if 等标签的自动补全

myBatis的动态SQL特性允许我们根据条件动态地构建SQL语句。myBatis Idea插件在这一领域提供了极大的支持,包括自动补全foreach, if等标签,以便在编写这些动态SQL片段时能够减少出错概率并提高效率。

例如,当编写如下的foreach标签:

<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
    #{item}
</foreach>

插件会自动补全标签,并提示“collection”, “item” 和 “index” 属性的值。开发者只需要通过代码提示选择或输入正确的值即可。

4.2.2 动态SQL片段的代码提示

myBatis Idea插件进一步支持动态SQL片段的代码提示。开发者可以在Mapper接口方法中定义动态SQL片段,插件能够智能地将这些片段应用到相应的Mapper XML文件中。

例如,假定我们有一个Mapper接口方法定义如下:

List<User> selectByStatus(List<Integer> statusList);

当我们在Mapper XML中编写对应的SQL语句时,插件会自动提示你刚刚定义的方法,并允许你选择相应的动态SQL片段插入到当前SQL语句中。

<select id="selectByStatus" resultType="User">
    SELECT * FROM users WHERE status IN
    <foreach collection="statusList" item="status" open="(" close=")" separator=",">
        #{status}
    </foreach>
</select>

在这个例子中,插件会智能地识别出“statusList”这个集合参数,并生成正确的foreach循环结构。

通过这些功能,myBatis Idea插件显著地提高了编写动态SQL的便捷性和准确性,从而降低了编码过程中可能出现的错误,提升了开发效率。

5. Mapper XML与Java接口关联

5.1 关联的原理与配置

5.1.1 探究Mapper XML与Java接口关联机制

在使用myBatis框架时,我们经常需要定义Mapper接口以及对应的XML配置文件,它们之间通过命名空间和方法签名进行关联。这一机制是myBatis框架核心功能之一,它允许开发者通过面向对象的方式编写SQL操作,并通过动态代理实现与数据库的交互。

为了深入理解这种关联,首先需要了解myBatis框架的执行流程:

  1. 当应用程序调用Mapper接口的方法时,myBatis会通过动态代理机制拦截该调用。
  2. 动态代理根据接口方法名和参数,在Mapper XML文件中找到对应的SQL语句。
  3. myBatis执行SQL语句,并处理结果集,将其映射为Java对象返回。

这种关联的核心在于命名空间(namespace)和唯一标识(id)。命名空间通常对应接口的全限定名(即包名+接口名),而id则是接口方法名。myBatis通过这两者的组合唯一确定一个SQL语句。

5.1.2 通过配置文件或注解实现关联

在myBatis中,可以通过两种方式实现Mapper XML和Java接口的关联:

  1. 配置文件方式

这是传统方式,即在mybatis-config.xml中通过 <mappers> 标签注册Mapper XML文件。示例如下:

xml <mappers> <mapper resource="org/mybatis/example/BlogMapper.xml"/> </mappers>

这里, resource 属性指定了Mapper XML文件的位置,它必须与接口的全限定名相匹配。

  1. 注解方式

从myBatis 3.4.0版本开始,支持使用注解来绑定Mapper接口与XML文件。这种方式更加灵活,可以在接口方法上直接使用注解,例如:

java @Mapper public interface UserMapper { @Select("SELECT * FROM users WHERE id = #{id}") User getUserById(int id); }

通过 @Mapper 注解,myBatis可以识别这是一个Mapper接口,并在运行时查找与接口同名的XML文件,或者根据注解提供的路径查找对应的XML配置。

在实际开发中,为了代码的清晰性和易于管理,推荐将接口和XML文件存放在同一目录下,并使用命名空间作为包名和接口名的映射。这种方式既符合Java的包管理机制,也便于团队成员快速定位相关文件。

5.2 动态代理实现方法

5.2.1 探索myBatis动态代理原理

myBatis动态代理机制是其实现接口和XML关联的关键技术之一。动态代理的本质是在运行时动态生成一个代理类,这个代理类实现了目标接口,并在内部调用对应的Mapper XML中定义的SQL语句。

这里涉及到Java的动态代理机制,它属于反射API的一部分。当调用接口方法时,myBatis会拦截这个调用,并根据方法名和参数,去寻找Mapper XML文件中定义的SQL语句,然后执行它。整个过程是透明的,对开发者而言,就像是直接调用接口方法一样。

5.2.2 解析Java接口如何触发Mapper XML执行

要理解Java接口是如何触发Mapper XML执行的,我们需要了解几个关键步骤:

  1. 接口方法被调用 :当开发者调用一个Mapper接口的方法时,这个调用被myBatis拦截。

  2. 代理类被创建 :myBatis在内部创建了一个代理类的实例,这个实例实现了接口。

  3. 调用方法映射 :代理类实例的方法调用会映射到对应的Mapper XML文件中的SQL语句。

  4. SQL执行与结果映射 :执行SQL语句,并将结果集映射到Java对象。

下面是一个简单的示例来说明这一过程:

// 定义Mapper接口
public interface UserMapper {
    User selectUserById(int id);
}

// MyBatis会创建一个UserMapper的代理对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 调用接口方法,实际上触发了代理对象内部的逻辑
User user = mapper.selectUserById(1);

在上述示例中, selectUserById 方法被调用时,实际上是由myBatis动态创建的代理对象去执行的。代理对象会查找对应的Mapper XML文件,找到 selectUserById 方法对应的SQL语句并执行,最后返回映射后的 User 对象。

通过深入理解和使用Mapper XML与Java接口关联机制,开发者可以更有效地利用myBatis框架,简化数据库操作代码,并且保持代码的清晰和可维护性。

6. 自定义注释和代码高亮

6.1 自定义注释模板

6.1.1 创建和管理注释模板

在进行项目开发时,统一的代码注释风格不仅能增强代码的可读性,还能在项目交接时降低学习成本。myBatis Idea插件提供了一个便捷的自定义注释模板功能,使得开发者能够创建、管理并应用个性化的注释模板。

要创建自定义注释模板,可以按照以下步骤操作:

  1. 打开IntelliJ IDEA,进入 File -> Settings -> Editor -> Code Style -> MyBatis
  2. MyBatis 配置页面中,找到 File and Code Templates 部分。
  3. 选择 + 号来添加新的模板,也可以在这里编辑或删除已有的模板。

在这里,你可以使用模板变量来自定义注释内容。例如,创建一个简单的Java类注释模板可能如下所示:

/**
 * $description$
 * @author $user$
 * @date $date$ $time$
 */

其中 $description$ $user$ $date$ $time$ 都是动态填充的变量,它们在每次生成代码时会自动根据上下文进行替换。

6.1.2 注释模板的应用场景与示例

应用自定义注释模板的场景很多,它可以用于:

  • 为Mapper接口添加作者、创建日期和描述等信息。
  • 为Mapper XML文件的每个SQL语句添加说明,便于理解其用途。
  • 在实体类中加入字段描述,便于其他开发人员快速理解字段含义。

例如,假设你正在创建一个针对用户表的Mapper接口。你可以使用自定义的注释模板如下:

/**
 * 用户数据访问接口
 * @author John Doe
 * @date 2023-03-20 12:30
 */
public interface UserMapper {
    // ... (此处为方法定义)
}

模板中使用了 $author$ 变量来自动生成作者信息, $date$ $time$ 变量用于生成创建时间。这不仅提高了代码的规范性,还提升了代码的可维护性。

6.2 代码高亮功能

6.2.1 配置代码高亮的颜色和样式

代码高亮是代码编辑器提供的一个辅助功能,通过为代码中不同元素设置不同的颜色和样式,帮助开发者快速识别代码结构和类型。在myBatis Idea插件中,可以通过配置文件或IDEA设置来自定义代码高亮的颜色和样式。

要自定义代码高亮的样式,可以按照以下步骤操作:

  1. 打开IntelliJ IDEA,进入 File -> Settings -> Editor -> Color Scheme -> MyBatis
  2. 在这里,你可以选择不同的组件(如 Keywords Comments Strings 等),并为它们分别设置颜色和字体样式。

通过这样的设置,你可以让关键字更显眼,让注释和字符串更加易读,从而提高整体的代码可读性。

6.2.2 高亮对代码可读性的提升作用

代码高亮不仅仅是一种视觉效果,它实际上对提升代码的可读性和编写效率起到了重要作用。例如:

  • 关键字高亮显示帮助开发者快速识别出代码中的控制语句或重要的方法调用。
  • 未使用的代码或变量用特定颜色标记,避免在代码审查时出现误用。
  • 对于SQL语句中的不同部分(如字段名、表名、条件语句等)应用不同的颜色,有助于在维护时快速区分和定位。

例如,下面这段代码展示了如何通过高亮来区分不同的SQL片段:

SELECT 
  <span style="color:#43A047">user_id</span>,
  <span style="color:#FFA726">username</span>,
  <span style="color:#EF5350">created_at</span>
FROM 
  users
WHERE 
  <span style="color:#26C6DA">status</span> = 'active'

在实际应用中,通过配置和使用自定义的高亮样式,可以大大提高开发效率和代码质量。这种细节的关注不仅提升了代码的美观性,也进一步强化了代码的清晰性和准确性。

7. 插件使用和更新的好处

在现代软件开发中,效率和质量是成功的关键因素。myBatis Idea插件在提升开发效率和确保代码质量方面提供了显著优势。此外,定期更新插件也是保持这些优势的重要环节。

7.1 提升开发效率

7.1.1 代码自动生成减少重复劳动

程序员在开发过程中经常会遇到重复编写基础代码的情况,这不仅消耗时间,还增加了人为错误的风险。myBatis Idea插件通过逆向工程和代码生成功能,极大地简化了这一流程。用户可以快速将数据库表结构映射为实体类、Mapper接口以及对应的XML文件,从而显著减少了重复的编码工作。

操作示例

  1. 在IDEA的侧边栏选择 “Database” 面板。
  2. 右键点击数据库连接,选择 “Generate” -> “Model Classes…”。
  3. 在弹出的对话框中选择需要生成的表和需要的配置,然后点击 “OK”。
  4. 插件自动生成了实体类和对应的Mapper接口。

7.1.2 SQL提示和自动完成节省时间

编写SQL查询时,myBatis Idea插件能够提供上下文相关的智能提示。这不仅包括表名、列名的自动补全,还包括了对动态SQL标签的智能感知。例如,当你输入 <foreach> 标签时,插件会提示你正确的属性和结构,从而避免了记忆和拼写错误,节省了编写和调试的时间。

7.2 确保代码质量

7.2.1 减少编码错误和遗漏

myBatis Idea插件通过代码生成和自定义注释模板等功能,帮助开发者维护一致的编码风格和标准。自动生成的代码减少了人为编写的可能,从而降低了出错概率。此外,注释模板的使用确保了每个方法和类都有清晰的文档说明,有助于团队成员快速理解和维护代码。

7.2.2 通过自动化测试提升代码可靠性

虽然myBatis Idea插件本身不直接提供测试功能,但它生成的代码结构清晰,注释齐全,这为编写单元测试提供了极大的便利。清晰的代码逻辑和完整的注释有助于开发者快速定位测试重点,编写有效的测试用例,从而提升整个项目的代码可靠性。

7.3 及时更新的好处

7.3.1 新特性体验与功能优化

软件工具的发展日新月异,myBatis Idea插件也不例外。定期的更新会带来新的功能特性,例如改进的代码生成逻辑、增强的SQL提示能力、更丰富的注释模板等。开发者通过更新插件可以体验到这些新特性,从而提高工作效率和代码质量。

7.3.2 安全性更新与漏洞修复

安全性是任何软件开发工具必须重视的问题。随着新的安全威胁的出现,插件开发者会不断推出安全性更新来修复已知漏洞。及时更新插件,可以防止安全漏洞被利用,保护你的开发环境和代码库不受侵害。

通过上述内容的介绍,我们可以看到myBatis Idea插件在提升开发效率、确保代码质量以及及时更新的好处方面,为开发者提供了强大的支持。因此,合理地使用和更新myBatis Idea插件是提高工作效率和产品质量的重要手段。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本文详细介绍了myBatis Idea插件的安装步骤和使用方法,旨在提升开发人员使用myBatis框架的效率。插件包括代码生成、SQL提示、自动完成、Mapper XML文件与Java接口关联等功能。步骤包括下载压缩包文件、解压、在IntelliJ IDEA中上传插件、安装并重启IDE以加载插件。插件使用包括自动生成代码、SQL提示、接口与XML关联、注释支持和动态SQL高亮等功能,能够显著提高开发效率,减少编写重复代码的时间,并提升代码可读性。


本文还有配套的精品资源,点击获取
menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值