1、hibernate快速搭建入门之增删改查(手动档)

HIBERNATE:Hibernate 学习一--注解方式自动建表 NULL 博文链接:https://xiaojianhx.iteye.com/blog/1744681 立即下载

1.1什么是hibernate:

①是一个开放源代码的对象关系映射框架(ORM)

②它对JDBC进行了非常轻量级的对象封装(消耗资源少)

③它将POJO与数据库表建立映射关系,是一个全自动的orm框架,

④hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

⑤Hibernate可以应用在任何使用JDBC的场合

⑥具有数据库兼容性

 

1.2关系型数据库(ORM):

①表和类关联

②行和对象关联

③字段和属性关联

1.3工作原理:

 

2.开发流程:

2.1第一步:搭建环境:

2.1新建项目

2.2导入项目依赖相关maven包:

<!--hibernate-->
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>5.2.10.Final</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-entitymanager</artifactId>
  <version>5.2.10.Final</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-osgi -->
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-osgi</artifactId>
  <version>5.2.10.Final</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-envers -->
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-envers</artifactId>
  <version>5.2.10.Final</version>
</dependency>

  <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0 -->
  <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-c3p0</artifactId>
      <version>5.2.10.Final</version>
  </dependency>

<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-proxool -->
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-proxool</artifactId>
  <version>5.2.10.Final</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-infinispan -->
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-infinispan</artifactId>
  <version>5.2.10.Final</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-ehcache -->
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-ehcache</artifactId>
  <version>5.2.10.Final</version>
</dependency>


  <!--数据库驱动,根据数据库的版本选择驱动版本-->
  <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
  <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.13</version>
  </dependency>

<!--日志包-->
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.25</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.7.25</version>
  <scope>test</scope>
</dependency>

2.3项目目录结构:

2.2第二步:创建hibernate的核心配置文件

找到依赖包:

、

hibernate.cfg.xml配置内容(可以做成模板,方便以后的使用): 

<!DOCTYPE hibernate-configuration PUBLIC

        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!--*************1.数据源********************-->

         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

        <property name="hibernate.connection.url">

            jdbc:mysql://127.0.0.1:3307/hibernate?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC
</property>

        <property name="hibernate.connection.username">root</property>

        <property name="hibernate.connection.password">password</property>

        <!--扩展属性 必须指向数据库的方言 mysql版本低于5.5用MySQL5Dialect-->

        <property name="hibernate.dialect">org.hibernate.dialect.MySQL55Dialect</property>

        <!--自动创建表  一般不需要 常规项目先做数据库表-->

        <property name="hbm2ddl.auto">update</property><!--update自动更新-->

        <!--显示SQL-->

         <property name="hibernate.show_sql">true</property>

        <property name="hibernate.format_sql">true</property><!--格式化 好看一点-->

        

        <!--**********2.注册实体*************************-->

      <!--  <mapping resource=""></mapping>-->

    </session-factory>

</hibernate-configuration>

2.3第三步:创建ORM映射文件和对应的实体类

2.3.1实体类:

public class YtUser {

    private long id;

    private  String user;

    private String password;



    public long getId() {

        return id;

    }



    public void setId(long id) {

        this.id = id;

    }



    public String getUser() {

        return user;

    }



    public void setUser(String user) {

        this.user = user;

    }



    public String getPassword() {

        return password;

    }



    public void setPassword(String password) {

        this.password = password;

    }

}

在 的build标签中添加:

<!--把java目录中的配置文件,也能够打包到java包中-->

<resources>

  <resource>

    <directory>src/main/resources</directory>

  </resource>

  <resource>

    <directory>src/main/java</directory>

    <includes>

      <include>**/*.properties</include>

      <include>**/*.xml</include>

    </includes>

   <!--是否替换资源中的属性-->

    <filtering>false</filtering>

  </resource>

</resources>

2.3.2ORM映射文件:


<!DOCTYPE hibernate-mapping PUBLIC

        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

    <!--1.类和表映射-->                <!--ytuser:数据库的表名-->

    <class name="com.lemon.pojo.YtUser" table="ytuser">

        <!--必须有主键,对象和行关联 唯一标识 OID(对象ID)-->

        <id name="id" column="id">

            <!--主键生成方式 identity自增-->

            <generator class="identity"/>

           </id>

        <!--属性映射-->

        <property name="username" column="username"/>

        <property name="password" column="password"/>

        

    </class>

    

</hibernate-mapping>

在 中注册实体:

2.3.3测试:

新建数据库:

测试类:

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;


public class App
{

    public void initTable(){
        //加载配置,初始化
        Configuration configuration = new Configuration();
        configuration.configure("hibernate.cfg.xml");
        SessionFactory sessionFactory = configuration.buildSessionFactory();
    }

    public static void main( String[] args )
    {
        App a =new App();
        a.initTable();
    }
}

运行成功后:(生成表)

 

2.4第四步:操作数据

2.4.1插入:

import com.lemon.pojo.YtUser;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;


public class App
{

    public void initTable(){
        //加载配置,初始化
        Configuration configuration = new Configuration();
        configuration.configure("hibernate.cfg.xml");
        SessionFactory sessionFactory = configuration.buildSessionFactory();
    }
    public void addUser(){
        //第一步:加载配置
        Configuration configuration = new Configuration();
        configuration.configure("hibernate.cfg.xml");
        //第二步:得到工厂
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //第三步:得到Session
        Session session = sessionFactory.openSession();
        //第四步:开启事务
        Transaction transaction = session.beginTransaction();

        //第五步:执行工作
        YtUser pojo = new YtUser();
        pojo.setUsername("测试1");
        pojo.setPassword("测试1");
        session.save(pojo);

        //第六步:提交事务
        transaction.commit();
        //关闭连接
        session.close();
        sessionFactory.close();
     
    }

    public static void main( String[] args )
    {
        App a =new App();
      //  a.initTable();
        a.addUser();
    }
}

运行:

数据库:

为了方便,addUser封装成工具类:

import com.lemon.pojo.YtUser;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class YtUserUtils {


    public static void addUser(String userName, String password){
        //第一步:加载配置
        Configuration configuration = new Configuration();
        configuration.configure("hibernate.cfg.xml");
        //第二步:得到工厂
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //第三步:得到Session
        Session session = sessionFactory.openSession();
        //第四步:开启事务
        Transaction transaction = session.beginTransaction();

        //第五步:执行工作
        YtUser pojo = new YtUser();
        pojo.setUsername(userName);
        pojo.setPassword(password);
        session.save(pojo);

        //第六步:提交事务
        transaction.commit();
        //关闭连接
        session.close();
        sessionFactory.close();
    }
}

 

测试:

把上面的测试类的mian函数改为:

public static void main( String[] args )
{
  //  App a =new App();
  //  a.initTable();
  //  a.addUser();
    YtUserUtils.addUser("测试3","测试3");
}

2.4.2更新:

封装session:


private static SessionFactory sessionFactory;

static {

    Configuration configuration = new Configuration();
    configuration.configure("hibernate.cfg.xml");
    sessionFactory = configuration.buildSessionFactory();
}

public static Session openSession(){
    return sessionFactory.openSession();
}

更新:

//更新
  public  void updateT(){
      Session session = YtUserUtils.openSession();
      Transaction transaction = session.beginTransaction();

      //更新方式1;
/*       //如果更新的是部分字段,先得到再更新,否则使用HQL
      YtUser ytUser = session.get(YtUser.class,2L);
      ytUser.setPassword("123456");*/

//更新方式2:
      //这种必须全部更新 否则不更新的为null
      YtUser ytUser = new YtUser();
      ytUser.setId(2L);
      ytUser.setPassword("789");

      session.update(ytUser);
      transaction.commit();
      session.close();
     
  }

public static void main( String[] args )
{
    App a =new App();
 //   a.initTable();
 //   a.addUser();
   // YtUserUtils.addUser("测试3","测试3");
  //  a.findById(2L);
    a.updateT();
}

2.4.3:删除:

//删除public void deletId(Long id){    
Session session = YtUserUtils.openSession();    
Transaction transaction = session.beginTransaction();    
YtUser ytUser = session.get(YtUser.class,id);    
session.delete(ytUser);    
transaction.commit();    
session.close();
}

public static void main( String[] args ){    
App a =new App();
 //   a.initTable(); 
//   a.addUser();   
// YtUserUtils.addUser("测试3","测试3");  
//  a.findById(2L);    
//更新    
//  a.updateT();    
//删除    
a.deletId(2L);
}

2.4.4:查找


//查找 通过id找到对应的username和password
public void findById(Long id){
   Session session = YtUserUtils.openSession();
   YtUser ytUser = session.get(YtUser.class,id);
    System.out.println(ytUser.getUsername() + "\t" + ytUser.getPassword());
}

 

基于Claude AI的Dex个人操作系统:从零部署到高效工作流实战 在当今信息过载的时代,个人知识管理(PKM)和任务自动化成为提升效率的关键技术。传统PKM工具如Notion、Obsidian虽然提供了强大的信息存储能力,但本质上是被动的数据库,需要用户手动维护结构和链接,容易形成信息孤岛。其核心原理在于通过预设的文件夹结构和智能路由,实现信息的自动归类与关联。这种自动化同步机制的技术价值在于彻底消除重复劳动和决策疲劳,让用户从繁琐的信息整理中解放出来,专注于高价值思考。在实际应用场景中,它尤其适合需要处理大量会议、任务和人际关系的知识工作者,如产品经理、项目经理和团队领 阅读详情

相关推荐

ESWA投稿全流程避坑指南:从LaTeX模板到审稿状态查询(附最新资源链接)

本文提供了一份详尽的ESWA期刊投稿全流程指南,涵盖从LaTeX模板深度适配、Cover Letter撰写,到Editorial Manager系统操作、审稿状态解析等关键环节。重点解析了投稿准备中的常见“雷区”与文件合规性要求,并分享了收到审稿意见后的高效修改与回复策略,旨在帮助研究者规避流程陷阱,提升投稿效率与成功率。

9o8p7i6u5y的博客 838

SpringBoot手动控制Entity实体类调用Hibernate自动创建表机制

Spring手动控制调用Hibernate自动创建表机制设置实体类工厂属性调用自动创建表执行方法 设置实体类工厂属性 public LocalContainerEntityManagerFactoryBean entityManagerFactory(String path, String type) { LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityMana

yangjueye的博客 612

Vue+ECharts-GL 3D地图实战:5层叠加打造炫酷中国地图(附完整代码)

本文详细介绍了如何利用Vue和ECharts-GL构建具有强烈立体感的3D中国地图。通过5层图层的巧妙叠加与样式调校,实现了从背景阴影到交互高光的完整视觉层次,并整合了动态飞线与散点标记。文章提供了完整的代码实现、核心配置解析以及性能优化与视觉调优的实战技巧,帮助开发者快速打造专业级的交互式地图可视化应用。

d6e7f8g9h的博客 649

使用hibernate生成表结构

准备工作首先创建一个空的web项目,在其中添加hibernate的jar包 在src目录下创建hibernate配置文件:hibernate.cfg.xml (如果使用intellij idea创建maven项目,src默认不是Source Folders,可以在file->project Structure->modules下右键src选sources然后apply即可)

Today is Monday 605

STM32开发者必看:如何在正点原子探索者开发板上快速移植CANopenNode协议栈

本文为STM32开发者提供了在正点原子探索者开发板上快速移植CANopenNode协议栈的实战指南。文章详细介绍了从环境准备、硬件抽象层适配到协议栈初始化与测试的全过程,并分享了PDO配置与性能优化等关键技巧,帮助开发者高效实现CANopen标准化通信。

weixin_29173777的博客 462

从Excel到Power Pivot:构建你的第一个商业智能分析模型

本文详细介绍了如何从Excel升级到Power Pivot,构建你的第一个商业智能分析模型。通过激活Power Pivot功能、导入数据、建立表关系、创建智能度量值以及打造交互式仪表盘,帮助用户高效处理百万行级别的数据,实现数据自动关联和动态分析,大幅提升商业决策效率。

weixin_30629653的博客 256

Hibernate的手动建表的方法【包含注解方式的手动见表】(二)

//加载配置信息 Configuration cfg = new Configuration().configure(); //实例化SchemaExport对象 SchemaExport export = new SchemaExport(cfg); //导出数据表 export.create(true, true); export.create(a,b) 第一个为T

有 prepare , No out 2247

QML 地图修改插件源码(三),Map在Plugin中设置加载地图类型

常用的地图种类分为交通图,地形图,卫星图等等,在QML的Map(以OSM地图为例)中提供activeMapType属性用于读取当前显示的地图类型(注意:该属性为只读属性,不能用于赋值),QML中地图的加载寻找根据瓦片的文件名进行查找,例如名为"osm_100-l-5-2-2-3.png"的瓦片,其中5代表了该地图的类型

zjgo007的专栏 3164

Hibernate入门第一讲——Hibernate框架的快速入门

Hibernate框架介绍什么是Hibernate我们可以从度娘上摘抄这样有关Hibernate的介绍: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以

李阿昀的博客 12万+

SpringBoot 整合Jasypt 实现配置文件加密读取操作详解

SpringBoot 整合Jasypt 实现配置文件加密读取操作详解

congge 4099

【AUTOSAR OS】调度表管理模块深度解析

本文深入解析AUTOSAR OS调度表的实现机制。调度表通过预定义到期点序列控制任务激活时序,支持周期性执行、多核协同和容错处理。核心数据结构包括调度表控制块(STCB)、配置结构和到期点动作。关键函数涵盖初始化、启动、到期点处理及链表管理,采用O(n)时间复杂度。以发动机控制为例展示配置与使用方式,并探讨显式同步、时间容错等高级特性。最后提出EP数量控制、链表优化等性能建议,为汽车ECU时间触发系统开发提供参考。

1605

Hibernate简单实现增删改查

Hibernate简单实现增删改查 2020.08.10 用了一下午时间入门了Hibernate给和我一样想学的小白分享一下 hibernate是一个对象关系映射框架 它对jdbc进行了封装只需要调用方法即可实现对数据库的操作。hibernate可以自动生成SQL语句,自动执行。 **直接上代码** 1. 创建新项目勾选web Application和Hibernate以及hibernate下面Create default hibernate configuration and main class点击N

wgy_BUG的博客 4852

【RT-DETR涨点改进】全网独家创新,卷积细节涨点改进篇 | TCSVT 2025 | 引入DGBM差分专家引导双向调制模块,利用双向仿射调制实现特征分布对齐,含多种创新改进,助力小目标检测高效涨点

本文提出DGBM差分专家引导双向调制模块,用于改进RT-DETR目标检测网络。该模块通过差分建模突出不同层级特征的独特信息,利用双向调制实现特征分布对齐,增强局部细节与全局语义的协同表达。DGBM包含差分专家机制、物理反演建模和双向仿射调制三个关键部分,能有效解决CNN与Transformer特征融合冲突问题。实验表明,该方法可提升复杂场景下的检测精度,降低误检漏检率,且模块具有可插拔、易集成的特点。文章详细介绍了模块结构、原理、优势及具体实现代码,并提供了四种RT-DETR改进方案的yaml配置文件。

Ai缝合怪、助力小伙伴高效发论文 441

Hibernate快速入门

Hibernate快速入门 前两天学习完毕了Mybatis,今天来学习另一个ORM框架,Hibernate。 Hibernate的优势: 对象化 Hibernate可以使开发人员以面向对象的思想来对数据库进行操作。Jdbc只能通过sql语句将元素传递给数据库,进行数据库操作。但是Hibernate可以在底层对数据进行对象转化,使开发人员只用面向对象的思想和方式来存取数据即可。 更好的移植...

Jack 352

IEM模型,地表粗糙度模拟

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

Camera2Demo

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

Hibernate的快速入门

hibernate的快速入门 一:hibernate_day01 入门案列&搭建环境 导入hibernate所需jar包,注意hibernate本身没有日志输出的jar包,所以要导入日志的jar包和mysql驱动jar 创建hibernate的核心配置文件,位置和名称是固定的,在src下创建一个名为hibernate.cfg.xml 创建实体类,并为实体写一份映射文件,记得引入到核心配置...

qq_38777614的博客 303

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

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

Hibernate基础:快速入门(1):概要及准备

什么是Hibernate Hibernate是提供了Java应用和数据库之间更好交互的一个ORM框架。 作为持久层常用的Hibernate,虽然有可能要淡出视线,但是现行使用了Hibernate的项目也是很多,依然有着学习的意义。

知行合一 止于至善 5192

Hibernate快速入门、快速使用(Hibernate级联操作)

Hibernate简介 如何使用 具体操作 创建maven工程 添加 hibernate.cfg.xml 文件 创建实体类 创建实体关系映射文件 将实体类关系映射文件注册到 Hibernate.cfg.xml 配置文件中 使用 Hibernate API 完成数据操作 pom.xml 文件中需要配置 resource 查看执行结果 Hibernate 级联操作 一对多关系 多对多关系 Hibernate 实现一对多 将实体类关系映射文件注册到 hibernate.cfg.xml 配置文件中 编写测试类

weixin_57558097的博客 4192

SSH学习之Hibernate3实例快速入门:实现增删改查功能

SSH学习之Hibernate3实例快速入门:实现增删改查功能欢迎使用Markdown编辑器Hibernate简述操作环境练习:增删改查实例前期准备:搭建项目,导入所需jar包插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图...

qq_41283356的博客 681

hibernate框架入门(增删改查)

转载请标明出处:https://blog.youkuaiyun.com/men_ma/article/details/106847165. 本文出自 不怕报错 就怕不报错的小猿猿 的博客 hibernate框架入门(增删改查)hibernate框架简介1.基于maven项目上用hibernate做增删改查(步骤)1.1 配置pom.xml(注意版本号)1.2 配置web.xml1.3 配置hibernate.cfg.xml(文件名必须一样)1.4 编写实体类User.java(根据数据库)1.5 写测试类(.

men_ma的博客 1329

hibernate1+基础入门(hibernate和ORM的概念、搭建hibernate开发环境、Hibernate中API介绍、抽取HibernateUtil工具类、使用Hibernate实现增删改...

第1章hibernate和ORM的概念部分 1.1Hibrenate概述 Hibernate是一种Java语言下的对象关系映射解决方案。它是使用GNU宽通用公共许可证发行的自由、开源的软件。它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的持久化框架。 Hibernate框架是Java持久层框架之一,它的设计目标是将软件开发人员从大量相同的数据持久层相关编程...

banxihan9345的博客 442

Hibernate快速入门1

一、开发环境搭建-测试 1.官网下载Hibernate 我下载的是hibernate-release-5.4.0.Final 2.创建普通的java项目,导入lib/required的jar包以及mysql的jar包 3.创建数据库以及实体类 CREATE DATABASE hibernate_demo01; USE hibernate_demo01; CREATE TABLE `cst_customer` ( `cust_id` BIGINT(32) NOT NULL AUTO_IN

qq_42980244的博客 177

hibernate入门及增删改查

hibernate几大特性 a.ORM框架/持久层框架 jdbc的一个框架 b.object reference mapping 对象关系映射 c.通过管理对象来改变数据库中的数据 d.通过管理对象来操作数据库 后来被mybatis取代 目标: 学会使用hibernate对数据库数据进行操作(增删改查) 一、使用 1.导入hibernate环境依赖 <!-- https://mvnrepository.com/artifact/org.hibernate/hiberna...

weixin_55966394的博客 1023

Hibernate框架入门,使用Hibernate实现基础的增删改查操作

1、Hibernate简介 首先,什么是hibernate?Hibernate是一个开放源代码的ORM框架,它对JDBC进行了轻量级的对象封装,使得Java开发人员可以使用面向对象的编程思想来操作数据库。Hbernate框架对应Javaee三层结构中的DAO层,其是用来操作数据库的一个框架,使用Hibernate框架可以极大地简化DAO层的代码。 那么什么是ORM?ORM是一种技术,它是Obj...

weixin_42577116的博客 1502
上一篇: 五、JAVA常用类库之Math、Random、Date
下一篇: 2、hibernate主键生成策略之uuid
LemonSnm
博客等级 码龄8年 66粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值