GVKun编程网logo

如何为SQL Server配置hibernate配置文件(怎么配置sql server)

29

对于想了解如何为SQLServer配置hibernate配置文件的读者,本文将提供新的信息,我们将详细介绍怎么配置sqlserver,并且为您提供关于2.Hibernate的主配置文件hibernat

对于想了解如何为SQL Server配置hibernate配置文件的读者,本文将提供新的信息,我们将详细介绍怎么配置sql server,并且为您提供关于2.Hibernate的主配置文件hibernate.cfg.xml、2018.10.6 Hibernate 配置文件详解 -------ORM 元数据配置 &&& hibernate 主配置文件、9.3.3 在Hibernate配置文件中设置隔离级别、c# – 无法使用Nhibernate为SQL Server CE创建架构的有价值信息。

本文目录一览:

如何为SQL Server配置hibernate配置文件(怎么配置sql server)

如何为SQL Server配置hibernate配置文件(怎么配置sql server)

这是MySQL的配置文件:

<hibernate-configuration>  <session-factory>    <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>    <property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>    <property name="hibernate.connection.username">root</property>    <property name="hibernate.connection.password">zgy01</property>    <property name="hibernate.connection.pool_size">100</property>    <property name="show_sql">false</property>    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>    <!-- Mapping files -->    <mapping resource="model.hbm.xml"/>  </session-factory></hibernate-configuration>

为SQL Server 2005指定什么?我这样做是这样的:

<hibernate-configuration>  <session-factory>    <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>    <property name="hibernate.connection.url">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>    <property name="hibernate.connection.username">sa</property>    <property name="hibernate.connection.password">lal</property>    <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>    <property name="hibernate.connection.pool_size">100</property>            <property name="show_sql">false</property>    <!-- Mapping files -->    <mapping resource="model.hbm.xml"/>  </session-factory></hibernate-configuration>

我的问题更确切地说是如何指定必须连接的数据库?

在MySQL中,我曾经这样做:

<property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>

答案1

小编典典

特定于数据库的 属性是:

  • hibernate.connection.driver_class:JDBC驱动程序类
  • hibernate.connection.url:JDBC URL
  • hibernate.connection.username:数据库用户
  • hibernate.connection.password:数据库密码
  • hibernate.dialect:Hibernate的类名,org.hibernate.dialect.Dialect它允许Hibernate生成针对特定关系数据库优化的SQL。

要更改数据库,您必须:

  1. 在类路径上为数据库提供适当的JDBC驱动程序,
  2. 更改JDBC属性( 驱动程序,URL,用户,密码
  3. 更改DialectHibernate用来与数据库对话

有两个驱动程序可以连接到SQL
Server。开源jTDS和Microsoft。驱动程序类和JDBC
URL取决于您使用哪一种。

使用jTDS驱动程序

驱动程序类名称为net.sourceforge.jtds.jdbc.Driver

sqlserver的URL格式为:

 jdbc:jtds:sqlserver://<server>[:<port>][/<database>][;<property>=<value>[;...]]

因此,Hibernate配置如下所示(请注意,您可以跳过hibernate.属性中的前缀):

<hibernate-configuration>  <session-factory>    <property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>    <property name="connection.url">jdbc:jtds:sqlserver://<server>[:<port>][/<database>]</property>    <property name="connection.username">sa</property>    <property name="connection.password">lal</property>    <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>    ...  </session-factory></hibernate-configuration>

使用Microsoft SQL Server JDBC 3.0:

驱动程序类名称为com.microsoft.sqlserver.jdbc.SQLServerDriver

URL格式为:

jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]

因此,Hibernate配置如下所示:

<hibernate-configuration>  <session-factory>    <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>    <property name="connection.url">jdbc:sqlserver://[serverName[\instanceName][:portNumber]];databaseName=<databaseName></property>    <property name="connection.username">sa</property>    <property name="connection.password">lal</property>    <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>    ...  </session-factory></hibernate-configuration>

参考文献

  • Hibernate Core参考文档
    • 3.3。JDBC连接
    • 3.4。可选配置属性
  • jTDS文档
  • Microsoft SQL Server JDBC驱动程序3.0文档
  • Microsoft SQL Server JDBC驱动程序2.0
  • Microsoft SQL Server JDBC驱动程序支持矩阵

2.Hibernate的主配置文件hibernate.cfg.xml

2.Hibernate的主配置文件hibernate.cfg.xml

1.配置

Hibernate 需要事先知道在哪里找到映射信息,这些映射信息定义了 Java 类怎样关联到数据库表。Hibernate 也需要一套相关数据库和其它相关参数的配置设置。所有这些信息通常是作为一个标准的 Java 属性文件提供的,名叫 hibernate.properties。又或者是作为 XML 文件提供的,名叫 hibernate.cfg.xml

我们将考虑 hibernate.cfg.xml 这个 XML 格式文件,来决定在我的例子里指定需要的 Hibernate 应用属性。这个 XML 文件中大多数的属性是不需要修改的。这个文件保存在应用程序的类路径的根目录里。

下面是一个重要的属性列表,你可能需要表中的属性来在单独的情况下配置数据库。

S.N. 属性和描述
1 hibernate.dialect 
这个属性使 Hibernate 应用为被选择的数据库生成适当的 SQL。
2 hibernate.connection.driver_class
JDBC 驱动程序类。
3 hibernate.connection.url 
数据库实例的 JDBC URL。
4 hibernate.connection.username
数据库用户名。
5 hibernate.connection.password 
数据库密码。
6 hibernate.connection.pool_size 
限制在 Hibernate 应用数据库连接池中连接的数量。
7 hibernate.connection.autocommit 
允许在 JDBC 连接中使用自动提交模式。

如果您正在使用 JNDI 和数据库应用程序服务器然后您必须配置以下属性:

 

S.N. 属性和描述
1 hibernate.connection.datasource 
在应用程序服务器环境中您正在使用的应用程序 JNDI 名。
2 hibernate.jndi.class 
JNDI 的 InitialContext 类。
3 hibernate.jndi.<JNDIpropertyname> 
在 JNDI的 InitialContext 类中通过任何你想要的 Java 命名和目录接口属性。
4 hibernate.jndi.url 
为 JNDI 提供 URL。
5 hibernate.connection.username 
数据库用户名。
6 hibernate.connection.password 
数据库密码。

Hibernate 和 MySQL 数据库

MySQL 数据库是目前可用的开源数据库系统中最受欢迎的数据库之一。我们要创建 hibernate.cfg.xml 配置文件并将其放置在应用程序的 CLASSPATH 的根目录里。

参考:详 http://www.cnblogs.com/biehongli/p/6531575.html

1:Hibernate的主配置文件的名字必须是hibernate.cfg.xml(主要配置文件中主要配置:数据库连接信息,其他参数,映射信息):
常用配置查看源码:Hibernate\hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties

  1.1:主配置文件主要分为三部分:

    注意:通常情况下,一个session-factory节点代表一个数据库;

    1.1.1:第一部分:数据库连接部分,注意"hibernate.connection.driver_class"中间的 _(杠);

    1.1.2:第二部分:其他相关配置,包含打印sql语句,格式化sql语句,创建数据表或者更新数据表等等

    1.1.3:第三部分:加载所有的映射;  
<!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节点代表一个数据库  -->
    <session-factory>
        <!-- (1):数据连接配置/(2):加载所有的映射(*.hbm.xml)-->
         
         <!-- 第一部分:数据连接配置 -->
         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
         <property name="hibernate.connection.url">jdbc:mysql:///test</property>
         <property name="hibernate.connection.username">root</property>
         <property name="hibernate.connection.password">123456</property>
         <!-- 数据库方法配置:mysql数据库的方言 
               hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql
         -->
         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
         
         <!-- 第二部分:其他相关配置 -->
         <!-- 2.1:hibernate.show_sql显示hibernate运行时候执行的sql语句 -->
         <property name="hibernate.show_sql">true</property>
         <!-- 2.2:格式化sql -->
         <property name="hibernate.format_sql">true</property>
         <!-- 2.3:自动建表 -->
         <property name="hibernate.hbm2ddl.auto">create</property>
         <!-- <property name="hibernate.hbm2ddl.auto">update</property>
          -->
         <!-- 
             每次在创建sessionFactory时执行创建表,当调用sessionFactory的close方法的时候,删除表
             #hibernate.hbm2ddl.auto create-drop
            每次都重新建表,如果已经存在就先删除再创建
            #hibernate.hbm2ddl.auto create
            如果表不存在就创建,表存在就不创建
            #hibernate.hbm2ddl.auto update
            生成环境时候执行验证,当映射文件的内容与数据库表结构不一样的时候就报错
            #hibernate.hbm2ddl.auto validate
          -->           
         
         <!-- 第三部分:加载所有的映射(*.hbm.xml) -->
         <mapping resource="com/bie/po/User.hbm.xml"/>
         
    </session-factory>
</hibernate-configuration>
hibernate.dialect
数据库 方言属性
DB2 org.hibernate.dialect.DB2Dialect
HSQLDB org.hibernate.dialect.HSQLDialect
HypersonicSQL org.hibernate.dialect.HSQLDialect
Informix org.hibernate.dialect.InformixDialect
Ingres org.hibernate.dialect.IngresDialect
Interbase org.hibernate.dialect.InterbaseDialect
Microsoft SQL Server 2000 org.hibernate.dialect.SQLServerDialect
Microsoft SQL Server 2005 org.hibernate.dialect.SQLServer2005Dialect
Microsoft SQL Server 2008 org.hibernate.dialect.SQLServer2008Dialect
MySQL org.hibernate.dialect.MySQLDialect
Oracle (any version) org.hibernate.dialect.OracleDialect
Oracle 11g org.hibernate.dialect.Oracle10gDialect
Oracle 10g org.hibernate.dialect.Oracle10gDialect
Oracle 9i org.hibernate.dialect.Oracle9iDialect
PostgreSQL org.hibernate.dialect.PostgreSQLDialect
Progress org.hibernate.dialect.ProgressDialect
SAP DB org.hibernate.dialect.SAPDBDialect
Sybase org.hibernate.dialect.SybaseDialect
Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialec
 

配置详解

其他配置

1.连接池

hihibernate.connection.pool_size:最大连接池数

hibernate实现了一种插件结构,可以集成任何连接池软件,对c3p0连接池提供了内嵌支持配置如下

2.JNDI是java命名与目录接口(java naming and directory interface)

在hibernate中,除了可以通过JDBC连接数据库在还可以通过jndi配置数据源,建立数据库的连接。

配置如下

3..二级缓存

hibernate共有两级缓存,第一级缓存是session级的缓存,它是事务范围的缓存,可以由hibernate自动管理。

第二级缓存是由sessionFactory管理的进程级缓存,可以在hibernate.cfg.xml配置文件中进行配置和更改,可以动态加载和卸载。

3.事务管理,

hibernate实现对JDBC的轻量级的封装,本身并没有提供事务管理的功能,它依赖于JDBC或者JAR的事务管理功能。

 hibernate默认使用JDBC的事务管理,可配置指定的transaction的工厂类别

 

5. 其他配置

 

2018.10.6 Hibernate 配置文件详解 -------ORM 元数据配置 &&& hibernate 主配置文件

2018.10.6 Hibernate 配置文件详解 -------ORM 元数据配置 &&& hibernate 主配置文件

##ORM 既然是实体与关系数据库的映射,那就需要建立实体和关系数据库之间的基础数据,也可以称为元数据。简单的说就是表示类与表、列与属性(get、set 方法)等等之间对应关系的数据。

###Customer.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<!-- 配置表与实体对象之间的联系 -->
<!-- package属性:填写一个包名在元素内部凡是需要书写完整类名的属性,可以直接写类名 -->
<hibernate-mapping package="com.glut.domain">
	<!-- 
		class元素:配置实体与表的对应关系
			name:完整类名
			column:数据库表明
	 -->
	<class name="Customer" table="cst_customer">
		<!-- id:配置主键映射的属性
				name:填写主键对应属性名
				column:填写表中的主键列名
		 -->
		<id name="cust_id" column="cust_id">
			<!-- generator:主键生成策略 -->
			<generator class="native"></generator>
		</id>
		
		<!-- property元素:除id之外iadeputong属性映射
				name:填写属性名
				column:填写列名
				type(可选):填写列(属性)的类型,hibernate会自动检测实体的属性类型
				每个类型有三种填法:java类型|hibernate类型|数据库类型
		 		not-null(可选): 配置该属性是否不能为空,默认值:false
		 		length(可选):配置数据库中列的长度,默认值:当前数据库类型最大长度
		 -->
		<property name="cust_name" column="cust_name" ></property>
		<property name="cust_source" column="cust_source"></property>
		<property name="cust_industry" column="cust_industry"></property>
		<property name="cust_level" column="cust_level"></property>
		<property name="cust_linkman" column="cust_linkman"></property>
		<property name="cust_phone" column="cust_phone"></property>
		<property name="cust_mobile" column="cust_mobile"></property>
	</class>
</hibernate-mapping>

###hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!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>
		<!-- 
			#hibernate.dialect org.hibernate.dialect.MySQLDialect
			#hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
			#hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect
			#hibernate.connection.driver_class com.mysql.jdbc.Driver
			#hibernate.connection.url jdbc:mysql:///test
			#hibernate.connection.username gavin
			#hibernate.connection.password
		 -->
		 <!-- 数据库驱动 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		
		<!-- 数据库url -->
		<property name="hibernate.connection.url">jdbc:mysql:///crm</property>
		
		<!-- 数据库连接用户名 -->
		<property name="hibernate.connection.username">root</property>
		
		<!-- 数据库连接密码 -->
		<property name="hibernate.connection.password">123456</property>
		
		<!-- 数据库方言
			DDL: 定义语言
			DML:操纵语言  增删改查
			DCL:控制语言  事务 权限
			
			注意:MYSQL选择方言的时候选择最短的方言
		 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		
		<!--
			d://hibernate-day01\resource\hibernate-release-5.0.7.Final\project\etc\PROPERTIES
			关键字:show
			#hibernate.show_sql true     HBM生成sql并在控制台显示sql语句
			#hibernate.format_sql true   sql格式化显示
		 -->
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>
		
		
		<!-- 
			关键字:hbm2
			## auto schema export  自动导出表结构  自动建表
			#hibernate.hbm2ddl.auto create-drop  自动建表,每次框架运行结束都会将所有表删除.(开发环境中测试使用)
			#hibernate.hbm2ddl.auto create  自动建表,每次框架运行都会创建新的表,一千表将会被覆盖,表数据会丢失(开发环境中测试使用)
			#hibernate.hbm2ddl.auto update(推荐使用)  自动生成表,如果已经存在不会在生成。如果表有改动,自动更新表(不会删除任何数据)
			#hibernate.hbm2ddl.auto validate         校验,不自动生成表,每次启动会校验数据库中表是否正确。校验失败
		 -->
		<property name="hibernate.hbm2ddl.auto">update</property>
		
		
		<!-- 引入orm元数据
			路径书写:填写src下的路径
		 -->
		<mapping resource="com/glut/domain/Customer.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

### 实体对象


package com.glut.domain;


/**
 * Customer表对象
 * @author legend
 *
 */
public class Customer {
	private Long cust_id;
	private String cust_name;
	private String cust_source;
	private String cust_industry;
	private String cust_level;
	private String cust_linkman;
	private String cust_phone;
	private String cust_mobile;
	public Long getCust_id() {
		return cust_id;
	}
	public void setCust_id(Long cust_id) {
		this.cust_id = cust_id;
	}
	public String getCust_name() {
		return cust_name;
	}
	public void setCust_name(String cust_name) {
		this.cust_name = cust_name;
	}
	public String getCust_source() {
		return cust_source;
	}
	public void setCust_source(String cust_source) {
		this.cust_source = cust_source;
	}
	public String getCust_industry() {
		return cust_industry;
	}
	public void setCust_industry(String cust_industry) {
		this.cust_industry = cust_industry;
	}
	public String getCust_level() {
		return cust_level;
	}
	public void setCust_level(String cust_level) {
		this.cust_level = cust_level;
	}
	public String getCust_linkman() {
		return cust_linkman;
	}
	public void setCust_linkman(String cust_linkman) {
		this.cust_linkman = cust_linkman;
	}
	public String getCust_phone() {
		return cust_phone;
	}
	public void setCust_phone(String cust_phone) {
		this.cust_phone = cust_phone;
	}
	public String getCust_mobile() {
		return cust_mobile;
	}
	public void setCust_mobile(String cust_mobile) {
		this.cust_mobile = cust_mobile;
	}
	@Override
	public String toString() {
		return "Customer [cust_id=" + cust_id + ", cust_name=" + cust_name + ", cust_source=" + cust_source
				+ ", cust_industry=" + cust_industry + ", cust_level=" + cust_level + ", cust_linkman=" + cust_linkman
				+ ", cust_phone=" + cust_phone + ", cust_mobile=" + cust_mobile + "]";
	}
	public Customer(Long cust_id, String cust_name, String cust_source, String cust_industry, String cust_level,
			String cust_linkman, String cust_phone, String cust_mobile) {
		super();
		this.cust_id = cust_id;
		this.cust_name = cust_name;
		this.cust_source = cust_source;
		this.cust_industry = cust_industry;
		this.cust_level = cust_level;
		this.cust_linkman = cust_linkman;
		this.cust_phone = cust_phone;
		this.cust_mobile = cust_mobile;
	}
	public Customer() {
		super();
		// TODO Auto-generated constructor stub
	}
	
}

###Hibernate 测试

package com.glut.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.jupiter.api.Test;

import com.glut.domain.Customer;

/**
 * 测试Hibernate框架
 * @author legend
 *
 */
public class hbmTest {
	@Test
	//保存客户
	public void fun1() {
		Configuration conf = new Configuration().configure();
		
		SessionFactory sessionFactory = conf.buildSessionFactory();
		
		Session session = sessionFactory.openSession();
		
		Transaction tx = session.beginTransaction();
		
		//--------------------------------
		
		//创建对象
		Customer c = new Customer();
		c.setCust_name("腾讯公司");//执行保存s
		
		session.save(c);
		
		//-------------------------------
		
		tx.commit();
		session.close();
		sessionFactory.close();
	}
}

9.3.3 在Hibernate配置文件中设置隔离级别

9.3.3 在Hibernate配置文件中设置隔离级别

9.3.3  在Hibernate配置文件中设置隔离级别

JDBC连接数据库使用的是默认隔离级别,即读操作已提交(Read Committed)和可重读(Repeatable Read)。在Hibernate的配置文件hibernate.properties中,可以修改隔离级别:

#hibernate.connection.isolation 4

在上一行代码中,Hibernate事务的隔离级别是4,这是什么意思呢?级别的数字意义如下。

1:读操作未提交(Read Uncommitted)
2:读操作已提交(Read Committed)
4:可重读(Repeatable Read)
8:可串行化(Serializable)

因此,数字4表示“可重读”隔离级别。如果要使以上语句有效,应把此语句行前的注释符“#”去掉:

hibernate.connection.isolation 4

也可以在配置文件hibernate.cfg.xml中加入以下代码:

<session-factory>
…..
//把隔离级别设置为4
<property name=” hibernate.connection.isolation”>4</property>
……
</session-factory>


在开始一个事务之前,Hibernate从配置文件中获得隔离级别的值。

c# – 无法使用Nhibernate为SQL Server CE创建架构

c# – 无法使用Nhibernate为SQL Server CE创建架构

当我使用此代码使用Nhibernate为sql Server CE创建架构时:

Fluently.Configure()
            .Database(MssqlCeConfiguration.Standard
            .ConnectionString(c => c.Is("Data Source=" + file))
            .Dialect<NHibernate.Dialect.MssqlCeDialect>()
            .Driver<NHibernate.Driver.sqlServerCeDriver>()
            .Showsql())
            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<NHibernateSessionFactory>())
            .ExposeConfiguration(BuildSchema)
            .BuildSessionFactory();  

private static void BuildSchema(Configuration config)
    {
       // new SchemaExport(config).Drop(false,true);
        //new SchemaExport(config).Create(true,true);

         //If DB File does not exists,create it.
        if (!File.Exists(file))
        {
            Directory.CreateDirectory(Path.GetDirectoryName(databaseFileName));
            sqlCeEngine engine = new sqlCeEngine("Data Source="+ file);
            engine.CreateDatabase();
            // this NHibernate tool takes a configuration (with mapping info in)
            // and exports a database schema from it
            new SchemaExport(config).Execute(false,true,false);
            //FormulasDAO.AddDefaultFormulaCollection();
        }
        else
        {
            new SchemaUpdate(config).Execute(false,true);
        }
    }

我有这样的例外

An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection,and InnerException for more detail.

内在的例外是

The IDbCommand and IDbConnection implementation in the assembly
System.Data.sqlServerCe Could not be found. Ensure that the
assembly System.Data.sqlServerCe is located in the application
directory or in the Global Assembly Cache. If the assembly is in
the GAC,use element in the application
configuration file to specify the full name of the assembly.

帮助解决这个问题.

解决方法

实际上问题是,在GAC中有2个版本的dll所以Nhibernate不知道哪个dll需要使用,因为NHibernate使用dll名称从gAC获取dll而不使用版本名称.

所以需要在AppConfig中告诉NHibernate

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<qualifyAssembly partialName="System.Data.sqlServerCe" fullName="System.Data.sqlServerCe,Version=4.0.0.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91"/>
</assemblyBinding>

关于如何为SQL Server配置hibernate配置文件怎么配置sql server的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于2.Hibernate的主配置文件hibernate.cfg.xml、2018.10.6 Hibernate 配置文件详解 -------ORM 元数据配置 &&& hibernate 主配置文件、9.3.3 在Hibernate配置文件中设置隔离级别、c# – 无法使用Nhibernate为SQL Server CE创建架构等相关内容,可以在本站寻找。

本文标签: