找回密码
 注册
搜索
查看: 303|回复: 0

[综合资料] [Apress][Beginning.Hibernate.From.Novice.to.Professional]

[复制链接]
发表于 2007-4-4 21:11:42 | 显示全部楼层 |阅读模式
About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
About the Technical Reviewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
nCHAPTER 1 An Introduction to Hibernate 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
nCHAPTER 2 Integrating and Configuring Hibernate. . . . . . . . . . . . . . . . . . . . . . . . . . 11
nCHAPTER 3 Building a Simple Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
nCHAPTER 4 The Persistence Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
nCHAPTER 5 An Overview of Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
nCHAPTER 6 Mapping with Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
nCHAPTER 7 Creating Mappings with Hibernate XML Files . . . . . . . . . . . . . . . . . . 139
nCHAPTER 8 Using the Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
nCHAPTER 9 Searches and Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
nCHAPTER 10 Advanced Queries Using Criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
nCHAPTER 11 Filtering the Results of Searches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
nAPPENDIX A More Advanced Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
nAPPENDIX B Hibernate Tools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
nAPPENDIX C Hibernate and Spring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
nAPPENDIX D Upgrading from Hibernate 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
nINDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
iii
Contents
About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
About the Technical Reviewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
nCHAPTER 1 An Introduction to Hibernate 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Plain Old Java Objects (POJOs). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Origins of Hibernate and Object-Relational Mapping . . . . . . . . . . . . . . . . . . 3
EJBs As a Persistence Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Hibernate As a Persistence Solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
A Thin Solution? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
A Hibernate Hello World Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Database Generation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
The Relationship of Hibernate 3 with EJB 3.0 . . . . . . . . . . . . . . . . . . . . . . . . 8
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
nCHAPTER 2 Integrating and Configuring Hibernate . . . . . . . . . . . . . . . . . . . . 11
The Steps Needed to Integrate and Configure Hibernate . . . . . . . . . . . . . . 11
Understanding Where Hibernate Fits in Your Java Application . . . . . . . . . 12
Deploying Hibernate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Required Libraries for Running Hibernate 3 . . . . . . . . . . . . . . . . . . . . 13
Annotations and Enterprise JavaBeans 3 . . . . . . . . . . . . . . . . . . . . . . 14
JMX and Hibernate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Hibernate Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Hibernate Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
XML Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Mapping Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Naming Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Using a Container-Managed Data Source . . . . . . . . . . . . . . . . . . . . . . 22
The Session Factory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
SQL Dialects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
v
nCHAPTER 3 Building a Simple Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Installing the Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Hibernate and Hibernate Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
HSQLDB 1.8.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Ant 1.6.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
The Ant Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Enabling Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Creating a Hibernate Configuration File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Running the Message Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Persisting Multiple Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Creating Persistence Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Creating the Object Mappings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Creating the Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
The Session and Related Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Using the Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Building DAOs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
The Example Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
nCHAPTER 4 The Persistence Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Introduction to the Life Cycle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Entities, Classes, and Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Entities and Associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Saving Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Object Equality and Identity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Loading Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Refreshing Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Updating Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Deleting Entities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Cascading Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Lazy Loading, Proxies, and Collection Wrappers . . . . . . . . . . . . . . . . . . . . . 76
Querying Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
nCHAPTER 5 An Overview of Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Why Mapping Cannot Be Automated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Primary Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
nCONTENTS vi
About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
About the Technical Reviewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
nCHAPTER 1 An Introduction to Hibernate 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
nCHAPTER 2 Integrating and Configuring Hibernate. . . . . . . . . . . . . . . . . . . . . . . . . . 11
nCHAPTER 3 Building a Simple Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
nCHAPTER 4 The Persistence Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
nCHAPTER 5 An Overview of Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
nCHAPTER 6 Mapping with Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
nCHAPTER 7 Creating Mappings with Hibernate XML Files . . . . . . . . . . . . . . . . . . 139
nCHAPTER 8 Using the Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
nCHAPTER 9 Searches and Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
nCHAPTER 10 Advanced Queries Using Criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
nCHAPTER 11 Filtering the Results of Searches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
nAPPENDIX A More Advanced Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
nAPPENDIX B Hibernate Tools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
nAPPENDIX C Hibernate and Spring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
nAPPENDIX D Upgrading from Hibernate 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
nINDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
iii
Contents
About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
About the Technical Reviewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
nCHAPTER 1 An Introduction to Hibernate 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Plain Old Java Objects (POJOs). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Origins of Hibernate and Object-Relational Mapping . . . . . . . . . . . . . . . . . . 3
EJBs As a Persistence Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Hibernate As a Persistence Solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
A Thin Solution? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
A Hibernate Hello World Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Database Generation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
The Relationship of Hibernate 3 with EJB 3.0 . . . . . . . . . . . . . . . . . . . . . . . . 8
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
nCHAPTER 2 Integrating and Configuring Hibernate . . . . . . . . . . . . . . . . . . . . 11
The Steps Needed to Integrate and Configure Hibernate . . . . . . . . . . . . . . 11
Understanding Where Hibernate Fits in Your Java Application . . . . . . . . . 12
Deploying Hibernate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Required Libraries for Running Hibernate 3 . . . . . . . . . . . . . . . . . . . . 13
Annotations and Enterprise JavaBeans 3 . . . . . . . . . . . . . . . . . . . . . . 14
JMX and Hibernate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Hibernate Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Hibernate Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
XML Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Mapping Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Naming Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Using a Container-Managed Data Source . . . . . . . . . . . . . . . . . . . . . . 22
The Session Factory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
SQL Dialects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
v
nCHAPTER 3 Building a Simple Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Installing the Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Hibernate and Hibernate Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
HSQLDB 1.8.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Ant 1.6.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
The Ant Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Enabling Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Creating a Hibernate Configuration File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Running the Message Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Persisting Multiple Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Creating Persistence Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Creating the Object Mappings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Creating the Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
The Session and Related Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Using the Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Building DAOs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
The Example Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
nCHAPTER 4 The Persistence Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Introduction to the Life Cycle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Entities, Classes, and Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Entities and Associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Saving Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Object Equality and Identity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Loading Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Refreshing Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Updating Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Deleting Entities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Cascading Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Lazy Loading, Proxies, and Collection Wrappers . . . . . . . . . . . . . . . . . . . . . 76
Querying Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
nCHAPTER 5 An Overview of Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Why Mapping Cannot Be Automated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Primary Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
nCONTENTS vi
Lazy...........................................................................etc


【文件名】:0744@52RD_[Apress][Beginning.Hibernate.From.Novice.to.Professional].pdf
【格 式】:pdf
【大 小】:2601K
【简 介】:
【目 录】:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-26 21:41 , Processed in 0.049383 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表