在jdiy.xml文件中,根节点jdiy-config下的第一个节点databases,为数据库连接配置块。JDiy可以同时连接操作多个数据库,即databases可以有多个database子级节点,每个database节点代表一个数据库连接,如下示例代码:
<!-- ..其它代码略.. --> <databases default="def" showSql="false"> <database name="def"> <type>MySQL</type> <host>127.0.0.1</host> <port>3306</port> <name>jdiy_db</name> <uid>root</uid> <pwd>123456</pwd> <maxPools>32</maxPools> <maxed>ERROR</maxed> </database> <database name="otherone"> <!-- ..另一个数据库连接配置.. --> </database> <!-- ..还可以定义更多.. --> </databases> <!-- ..其它代码略.. -->
<databases>配置段:
此节点接受如下两个属性:
default:
其值对应于某个database子节点的name属性值,用于定义JDiy的主数据库(或叫做默认数据库),如果不指定此属性,则系统将databases的第一个子级节点配置当作默认数据库。
附注:在程序代码中,默认数据库的操作DAO对象,可以直接使用JDiyContext上下文对象的getDao()方法取得(javaSE环境),或者App对象的getDao()方法取得(javaWeb环境);非默认的数据库,则需要通过getDao(String name)方法取得(其中name值对应于database子节点的name属性值)
showSql:
其取值为false或true,当设置为true时,将在日志输出中打印运行时执行的SQL语句;如果为false,则日志中将不显示SQL语句。在前期开发调试中,可以将其此值设置为true,以便跟踪调试;在项目正式应用环境中,建议将其值设置为false,以减少日志输出。
<database>配置段:
此节点接受一个属性name,用来定义这个数据库连接的名称(由您随便取的名字,注意不是数据库名),不能与其它database节点的name属性值重复。
database拥有多个子级节点,都是不带任何属性的单一元素(见下表):
节点名称 | 节点说明 |
---|---|
type | 指定数据库类型(不区分大小写)。 目前JDiy版支持的主流数据库有:MySQL, MsSQL, PostgreSQL, Oracle, DB2, SQLite |
host | (选1) 指定数据库的主机地址,例如本机:127.0.0.1 |
port | (选1) 指定数据库的端口号,例如:3306 |
name | (选1) 指定数据库名称,例如: jdiy_db |
url | (选2) 自定义数据库连接URL,例如:jdbc:mysql://www.jdiy.org:3306/jdiy_db |
driver | (选2) 自定义数据库驱动程序,例如:com.mysql.jdbc.Driver |
uid | 指定数据库登录用户名,例如:root |
pwd | 指定数据库登录密码,例如:123456 |
maxPools | 指定数据库连接池中保持活动连接的上限值,根据项目需求适当设置,值越大,意味着越占系统内存。 默认值为16; 当设置其值为0时,将禁用连接池. |
maxed | 其取值为:ERROR(错误模式) 或 WAIT (等待模式) 指示当池中的连接数达到上限时,又有新的连接请求进来时,程序应当如何处理。 设置为ERROR,出现这种情况后将抛出异常;设置为WAIT,则等待,直到有空闲连接后再处理。 提示:如发现系统在某段时间运行非常缓慢,在排除其它程序问题后,您应该考虑是否数据库连接请求过多(远大于maxPools设定值),且恰巧此处设置了WAIT等待模式,导致大量连接请求被阻塞。这种情况的解决办法是增大maxPools值,或尝试设置maxed为ERROR错误模式后再观查。 |
特别注意:将host, port, name这三个元素定义为一个组合;将url, driver这两个元素定义为另一个组合,在同一个database配置段中,这两个组合您只能选择其中一种进行配置。
配置示例:
我们以Oracle数据库为例,假设您有一个ORCL的Oracle数据库服务,Oracle数据库服务器地址为:192.168.0.2, 登录用户名和密码分别为:ROOT, 123456, 数据库连接池中的最大连接数设置为100,
则您在JDiy.xml的databases节点内可以使用如下配置:
<database name="oracle_test"> <type>oracle</type> <driver>oracle.jdbc.driver.OracleDriver</driver> <url>jdbc:oracle:thin:@192.168.0.2:1521:ORCL</url> <!--注意上面这行,Oracle区分大小写--> <uid>ROOT</uid> <pwd>123456</pwd> <maxPools>100</maxPools> <maxed>WAIT</maxed> </database>
由于有些程序员对数据库的JDBC驱动名称和连接字符串不太熟悉,因此,您还也可以采用像下面这样(指定IP,端口和数据库名)的形式,它与上面的配置方式是等效的:
<database name="oracle_test"> <type>oracle</type> <host>192.168.0.2</host> <port>1521</port> <name>ORCL</name> <uid>ROOT</uid><!--注意Oracle区分大小写--> <pwd>123456</pwd> <maxPools>100</maxPools> <maxed>WAIT</maxed> </database>
至此,JDiy的数据库连接配置介绍完毕。