问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

2013word中没有页码功能怎么办?还有怎么设置编号为“第一篇、第二篇”?希望能详细说明

发布网友 发布时间:2022-05-02 00:59

我来回答

4个回答

懂视网 时间:2022-05-02 05:20

C3P0由三部分内容组成。实例化对象,各配置项的含义,以及加载配置项的方式。

实例化对象的方式有三种,第一种方式直接new ComboPooledDataSource,第二种方式使用工厂类DataSources.poolDataSource方法。第三种不常见。第一种方式是最方便的方式。

C3P0的配置项主要有:

  1. 连接数据库的必要属性:例如jdbcUrl,user,password等。
  2. 连接池的大小配置。例如initialPoolSize
  3. 连接对象的生命周期。例如maxConnectionAge。
  4. 测试连接的配置,例如preferredTestQuery指定测试SQL语句。
  5. 重连策略的配置,例如acquireRetryAttempts指定重连次数。
  6. statement对象的配置,例如maxStatements指定最大Statement的总数。
  7. 线程配置,例如numHelperThread指定连接池拥有的线程数量。
  8. 事务配置,例如autoCommitOnClose指定是否在回收连接对象时自动提交事务。
  9. 调试模式,例如debugUnreturnedConnectionStackTraces为true时,会打印所有从连接池获取连接对象的记录。
  10. 监听类的设置,例如connectionCustomizerClassName指定监听类的名称,该类可以实现onAcquire,onDestory等方法。
  11. 日志的设置,例如com.mchange.v2.log.MLog指定日志的实现方式。常见的有log4J,commonLogging等。

配置项常见的加载方式有三种:

  1. 代码方式:通过实例对象调用setXX方法。
  2. properties文件:这种方式需要properties文件的名称必须为c3p0.properties,而且该文件必须在类加载路径下。
  3. xml文件:这种方式需要文件名称为c3p0-config.xml,路径由com.mchange.v2.c3p0.cfg.xml指定。

实例化                                                                    

实例化ComboPooledDataSource

 1 // 创建实例,dataSourceName指定数据源的名称
 2 ComboPooledDataSource dataSource = new ComboPooledDataSource(dataSourceName);
 3 // 设置数据库url
 4 dataSource.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:masteroracle");
 5 // 设置数据库驱动类
 6 dataSource.setDriverClass("oracle.jdbc.driver.OracleDriver");
 7 // 设置用户名
 8 dataSource.setUser("system");
 9 // 设置密码
10 dataSource.setPassword("password");
11 Connection conn = dataSource.getConnection();
12 runSQLTest(conn);

工厂DataSources方式

 1 // 创建unpooled的数据源
 2 DataSource ds_unpooled = DataSources.unpooledDataSource(jdbcUrl, user, password);
 3 // pooled数据源的参数
 4 Map<String,String> paramMap = new HashMap<>();
 5 DataSource pooled = DataSources.pooledDataSource(ds_unpooled,paramMap);
 6 Connection conn = pooled.getConnection();
 7 runSQLTest(conn);
 8 conn.close();
 9 DataSources.destroy(pooled);
10 return pooled;

配置项的含义                                                     

      C3P0各配置项的前缀为c3p0。如果指定dataSourceName,前缀为c3p0.named-configs.dataSourceName。如果存在多个用户,用户可以覆盖默认的配置项,前缀为c3p0.user-overrides.user。

Java代码方式

 1 /** -----------------------配置数据源----------------------------- **/
 2 /**
 3  * 配置数据源
 4  * 
 5  * @param dataSource
 6  * @return
 7  * @throws PropertyVetoException
 8 */
 9 public static ComboPooledDataSource configDataSource(ComboPooledDataSource dataSource)
10  throws PropertyVetoException {
11  // 连接数据库的必要属性
12  connDatabaseConfig(dataSource,"masterOracle");
13  // 连接池的相关配置
14  connPoolConfig(dataSource);
15  // 连接对象的生命周期配置
16  connAgeConfig(dataSource);
17  // 测试连接的配置
18  connTestConfig(dataSource);
19  // statement对象的配置
20  statementConfig(dataSource);
21  // 重连配置
22  reconnConfig(dataSource);
23  // 连接的监听类配置
24  connListenerConfig(dataSource);
25  // 事务的配置
26  tranConfig(dataSource);
27  // 调试模式
28  debugMode(dataSource);
29  // 线程配置
30  threadConfig(dataSource);
31  return dataSource;
32 } 

连接必要属性

  1. driverClassName:驱动类的名称,包名+类名
  2. jdbcUrl:数据库实例的url地址,格式为jdbc:subprotocol:subname。其中subprotocol表示连接方式。
  3. user:用户名
  4. password:密码。

C3P0.properties的方式

##-------------------------------数据库连接属性-----------------------------------##
# 驱动类名称
c3p0.driverClass=oracle.jdbc.driver.OracleDriver
# 数据库实例url地址
c3p0.jdbcUrl=jdbc:oracle:thin:@localhost:1521:masteroracle
# 用户名
c3p0.user=system
# 密码
c3p0.password=password

代码方式

技术分享
 1  // 设置数据库url
 2  dataSource.setJdbcUrl(jdbcUrl);
 3  // 设置数据库驱动类
 4  dataSource.setDriverClass(driverClassName);
 5  // 设置用户名
 6  dataSource.setUser(user);
 7  // 设置密码
 8  dataSource.setPassword(password);
 9  // 输出dataSourceName,在初始化ComboPooledDataSource时,字符串参数作为数据源名称,
10  dataSource.getDataSourceName();
View Code

连接池大小

  1. initialPoolSize:连接池的初始需求量大小,实际创建的连接对象小于需求量大小。
  2. minPoolSize:连接池连接数量的最小值。
  3. maxPoolSize:连接池连接数量的最大值。
  4. acquireIncrement:当实际连接不够用时,调整需求量的大小,需求量的递增值。

C3P0.properties的方式

##-------------------------------连接池配置-------------------------------------##
# 连接池拥有连接对象的初始值,这种情形下只是Acquire(需求)的初始值,真正创建对象会根据Acquire来按需创建
c3p0.initialPoolSize=10
# 连接池拥有连接对象的最大值,默认值为3
c3p0.maxPoolSize=20
# 连接池拥有连接对象的最小值,默认值为3
c3p0.minPoolSize=5
# 当无空闲连接时,新创建的连接数,默认值为3
c3p0.acquireIncrement=3

代码方式

技术分享
 1 /**
 2  * 连接池的配置 initialPoolSize:连接池的初始值 maxPoolSize:连接池的最大值 minPoolSize:连接池的最小值
 3  * 
 4  * @param dataSource
 5 */
 6 private static void connPoolConfig(ComboPooledDataSource dataSource) {
 7  // 连接池的初始值,默认值为3
 8  dataSource.setInitialPoolSize(10);
 9  // 连接池的最大值,默认值为0
10  dataSource.setMaxPoolSize(20);
11  // 连接池的最小值,最小值为3
12  dataSource.setMinPoolSize(1);
13  // 连接池的递增值,默认值为3
14  dataSource.setAcquireIncrement(5);
15 }
View Code

连接生命周期

  1. maxIdleTime:空闲连接对象的超时时间,当连接对象处于空闲状态的时间超过此时间,连接池销毁该连接对象。
  2. maxConnectionAge:连接对象的最大生命值,从创建连接对象开始计算。当超出此时间,销毁连接对象。与maxIdleTime的区别在于maxIdleTime只适用于空闲连接对象,而且是从空闲状态开始计算时间。
  3. maxIdleTimeExcessConnections:当连接池负载较低时,空闲连接对象的超时时间,设置此项可以在负载较低时,快速的释放链接。
  4. unreturnedConnectionTimeout:连接对象的最大使用时间。从连接池中获取连接对象开始计算,如果超出此时间,该连接对象还没有被连接池回收,那么连接池创建新连接对象替换旧连接对象。

C3P0.proerties的方式

##-------------------------------连接池中连接对象的生命周期--------------------------##
# 连接对象的最大生存时间,起始时间从连接池从数据库中创建连接对象开始计算。0表示永远不销毁
c3p0.maxConnectionAge=0
# 空闲连接对象的超时时间,起始时间从连接对象状态变为空闲时起计算。
c3p0.maxIdleTime=1800
# 当连接池不处于满载状态时,空闲连接对象的最大生存时间,设置此值,可以快速的减少连接池的大小
c3p0.maxIdleTimeExcessConnections=60
# 连接对象回收的超时时间,当连接池无法在一定时间内回收连接对象时,销毁旧对象,重新创建新对象
c3p0.unreturnedConnectionTimeout=600

代码方式

技术分享
 /**
 * 连接池生命周期配置,连接池首先从数据库中获取连接,用户请求时从连接池中获取连接。默认值为0,表示永不过期。 maxConnectionAge:
 * 连接对象生命的最大值,超过此时间,连接池会销毁连接对象,连接池变小。单位为秒,建议设置1800或更多 maxIdleTime:
 * 空闲连接在连接池中的超时时间,超过此时间,连接池将会销毁连接对象。单位为秒,建议设置1800或更多
 * maxIdleTimeExcessConnections:当连接池不处于过载状态时,空闲连接对象生命的最大值。
 * unreturnedConnectionTimeout:当连接对象在一定时间内无法回收,则创建新连接对象,销毁旧连接对象
 * 
 * @param dataSource
 */
 private static void connAgeConfig(ComboPooledDataSource dataSource) {
 // 连接对象生命的最大值,它指绝对时间。从创建开始时计算,默认值为0
 dataSource.setMaxConnectionAge(10 * 60 * 60);
 // 空闲连接的超时时间,从连接池变为空闲状态开始计算
 dataSource.setMaxIdleTime(1800);
 // 空闲连接对象生命的最大值
 dataSource.setMaxIdleTimeExcessConnections(60);
 // 连接对象的最大使用时间,设置为2小时
 dataSource.setUnreturnedConnectionTimeout(2 * 60 * 60);
 }
View Code

测试连接

  1. automaticTestTable:测试连接使用的数据库表
  2. connectionTesterClassName:测试连接使用的类名称
  3. idleConnectionTestPeriod:测试连接的时间间隔,在此间隔内不执行连接测试
  4. preferredTestQuery:SELECT 1。如果支持JDBC 4,会使用Connection.isAlive方法不设置此值。
  5. testConnectionOnCheckin:是否在连接池中回收连接对象时进行连接测试,
  6. testConnectionOnCheckOut:从连接池中取出连接对象时进行连接测试。

C3P0.properties的方式

##-------------------------------测试连接配置项----------------------------------##
# 从连接池中获取连接对象时进行连接测试
c3p0.testConnectionOnCheckout=true
# 从连接池回收对象时进行连接测试
c3p0.testConnectionOnCheckin=true
# 连接测试的间隔,在这一段时间内不进行连接测试
c3p0.idleConnectionTestPeriod=60
# 连接测试时使用的类,设置此值时忽略preferredTestQuery,automaticTestTable等属性值
#c3p0.connectionTesterClassName=com.rain.Tester.ConnectionTesterSample
# 测试的SQL语句
c3p0.preferredTestQuery=select 1
# 连接测试时使用的数据库表
c3p0.automaticTestTable=test

代码方式

技术分享
 /**
 * 连接测试配置。 automaticTestTable:测试连接时使用的数据库表 ,默认值为null。connectionTesterClassName:测试连接时使用的类名称
 * idleConnectionTestPeriod:测试连接间隔时间。在此段时间内不进行连接测试。 preferredTestQuery:连接测试使用的SQL语句。默认语句为select
 * 1 from dual。 testConnectionOnCheckin:从连接池回收连接对象时测试连接。默认值为false
 * testConnectionOnCheckOut:从连接池取出连接对象时测试连接。默认值为false。
 * forceSynchronousCheckins:连接池回收连接对象时是同步,还是异步,默认是异步。默认值为false
 * 
 * @param dataSource
 * @throws PropertyVetoException
 */
 private static void connTestConfig(ComboPooledDataSource dataSource)
  throws PropertyVetoException {
 // 连接测试使用的数据库表,默认值为Null
 dataSource.setAutomaticTestTable("dual");
 // 连接测试使用的SQL语句,默认使用Connection对象的isAlive方法,所以一般不设置此值,默认值为null
 dataSource.setPreferredTestQuery("select 1");
 // 从连接池取出连接时测试连接,默认值为false
 dataSource.setTestConnectionOnCheckout(true);
 // 从连接池回收连接时测试连接,默认值为false。
 dataSource.setTestConnectionOnCheckin(true);
 // 测试连接的间隔时间,默认值为0
 dataSource.setIdleConnectionTestPeriod(60);
 // 测试连接使用的类名称
 dataSource.setConnectionTesterClassName("com.rain.Tester.ConnectionTesterSample");
 }
View Code

重连策略

  1. acquireRetryAttempts:连接失败后,重连次数
  2. acquireRetryDelay:第一次重连与第二次重连的时间间隔。单位为毫秒
  3. checkTimeOut:等待连接的超时时间,超出此时间后不在进行重连。
  4. breakAfterAcquireFailure:当连接失败后,是否销毁数据源对象,true表示是,false表示否。

C3P0.properties

##-------------------------------重新连接---------------------------------------##
# 重新连接的次数
c3p0.acquireRetryAttempts=5
# 重新连接的时间间隔,单位为毫秒
c3p0.acquireRetryDelay=3000
# 等待连接响应的超时时间
c3p0.checkoutTimeout=120
# 当连接失败时,是否销毁数据源对象,true表示是,false表示否
c3p0.breakAfterAcquireFailure=true

代码方式

技术分享
 /**
 * 当连接失败后,重新连接的配置。 acquireRetryAttempts:重连的次数。 acquireRetryDelay:重连的时间间隔。单位为毫秒
 * breakAfterAcquireFailure:重连失败后,如果此值设置为false,数据源对象不会销毁,设置为false。数据源被销毁。
 * checkoutTimeout:等待连接响应的时间。
 */
 private static void reconnConfig(ComboPooledDataSource dataSource) {
 // 设置重连次数为3,默认值为30
 dataSource.setAcquireRetryAttempts(3);
 // 设置重连的时间间隔为2秒,默认值为1000
 dataSource.setAcquireRetryDelay(2000);
 // 等待连接响应的超时时间。默认值为0表示永远不超时
 dataSource.setCheckoutTimeout(4);
 // 重连失败后,销毁数据源。默认值为false
 dataSource.setBreakAfterAcquireFailure(true);
 }
View Code

Statement配置

  1. maxStatements:连接池缓存PreparedStatement对象的总数
  2. maxStatementsPerConnection:每个连接缓存PreparedStatement的最大值。
  3. statementCacheNumDeferredCloseThreads:当Connection关闭时,有可能会产生Statement对象没有关闭的情形,此时需要额外线程确保Statement对象在Connection关闭时正在关闭。一般配置为0或1

C3P0.properties的方式

##-------------------------------statement对象相关配置---------------------------##
# c3p0拥有的PreparedStatement对象的总数
c3p0.maxStatements=100
# 每个连接拥有PreparedStament对象的数量
c3p0.maxStatementsPerConnection=10
# 当Connection对象关闭时,启动额外线程确保statement对象关闭
# This parameter should only be set if you observe that attempts by c3p0 to close() cached #statements freeze
statementCacheNumDeferredCloseThreads=1

代码方式

技术分享
 1 /**
 2  * 连接池中PreparedStatement对象的配置 PreparedStatement对象的配置。 maxStatements:连接池拥有PreparedStatement对象的总数。
 3  * maxStatementsPerConnections:每个连接拥有PreparedStatement对象的数目。
 4  * 
 5  * @param dataSource
 6 */
 7 private static void statementConfig(ComboPooledDataSource dataSource) {
 8  // 设置PreparedStatement对象的总数,默认值为0,表示关闭
 9  dataSource.setMaxStatements(100);
10  // 设置每个连接拥有Statement对象的数目,默认值为0,表示关闭。
11  dataSource.setMaxStatementsPerConnection(15);
12 }
View Code

线程配置

  1. numHelperThreads:连接池拥有的线程数量。
  2. maxAdministrativeTaskTime:线程执行任务的超时时间,当超出此时间时,会销毁该线程,重新创建新线程。
  3. forceSynchronousCheckins:连接池回收连接对象时默认是同步方式执行连接测试,此值设置为true时,连接测试与回收连接对象是异步执行的。

C3P0.properties的方式

##-------------------------------线程池----------------------------------------##
# 连接池拥有的线程数量
c3p0.numHelperThreads=5
# 线程执行的最大时间
c3p0.maxAdministrativeTaskTime=600
# 启动独立的线程来在连接被连接池回收阶段进行测试
forceSynchronousCheckins=true

代码方式

技术分享
 1 /**
 2  * 连接池的线程设置 numHelperThread:连接池拥有的线程数量 maxAdministrativeTaskTime:线程执行的超时时间。
 3  * 
 4  * @param dataSource
 5 */
 6 private static void threadConfig(ComboPooledDataSource dataSource) {
 7  // 设置线程数量为10,默认值为3
 8  dataSource.setNumHelperThreads(10);
 9  // 设置线程的超时时间,默认值为0,设置为5分钟
10  dataSource.setMaxAdministrativeTaskTime(5 * 60);
11 }
View Code

事务配置

  1. autoCommitOnClose:回收连接对象时,是否自动提交事务。默认不配置,通过其他方式管理事务,例如Spring事务
  2. forceIgnoreUnresolvedTransactions:回收连接对象时,是否强制回滚或者提交事务,默认不配置。

C3P0.properties的方式

##-------------------------------事务-----------------------------------------##
# 交给Spring去管理事务,默认不配置这些项
# 连接关闭时,是否自动提交事务
c3p0.autoCommitOnClose=false
# 连接回收时,是否强制提交或者回滚当前连接拥有的事务,默认不配置。
c3p0.forceIgnoreUnresolvedTransactions=false

代码方式

技术分享
 1 /**
 2  * 连接对象的事务配置 autoCommitOnClose:是否自动提交事务,true为是,false为否,默认为否 forceIgnoreUnresolvedTransactions
 3  * 回收连接时,是否强制回滚或提交事务,默认为false。一般不设置此值, 例如由Spring来管理事务
 4  * 
 5  * @param dataSource
 6 */
 7 private static void tranConfig(ComboPooledDataSource dataSource) {
 8  // 关闭自动提交事务,默认值为false
 9  dataSource.setAutoCommitOnClose(false);
10  // 回收连接时,是否强制回滚或提交事务,设置为false。
11  dataSource.setForceIgnoreUnresolvedTransactions(false);
12 
13 }
View Code

调试模式

  1. debugUnreturnedConnectionStackTraces:打印从连接池获取连接对象的所有信息。

C3P0.properties的方式

##-------------------------------调试模式--------------------------------------##
# 当从连接池获取连接对象时,打印所有信息。
c3p0.debugUnreturnedConnectionStackTraces=true

代码方式

技术分享
 1 /**
 2  * 调试模式的设置 debugUnreturnedConnectionStackTraces:从连接池获取连接对象时,打印所有信息
 3 
 4  * 
 5  * @param dataSource
 6 */
 7 private static void debugMode(ComboPooledDataSource dataSource) {
 8  // 从连接池获取连接对象时,打印所有信息
 9  dataSource.setDebugUnreturnedConnectionStackTraces(true);
10 }
View Code

监听类

connectionCustomizerClassName:监听类的名称,监听类继承自AbstractConnectionCustomizer,监听类有四个方法

  1. onAcquire在数据库中创建连接对象时触发。
  2. onDestory在连接池中销毁连接对象时触发。
  3. onCheckOut从连接池获取连接对象时触发
  4. onCheckIn 从连接池回收连接对象时触发。

C3P0.properties的方式

##-------------------------------监听类---------------------------------------##
c3p0.connectionCustomizerClassName=com.rain.Tester.ConnCustomrizerSample

代码方式

技术分享
1 /**
2  * 设置连接对象的监听类,该类有四个方法 onAcquire:表示当连接池从数据库中获得连接时 onDestory:表示当连接池销毁连接对象时 onCheckOut:从连接池中获取连接对象时
3  * onCheckIn:连接池回收连接对象时。
4 */
5 private static void connListenerConfig(ComboPooledDataSource dataSource) {
6  // 设置连接对象的监听类
7  dataSource.setConnectionCustomizerClassName("com.rain.Tester.ConnCustomrizerSample");
8 }
View Code

日志配置

  1. com.mchange.v2.log.MLog:日志的实现方式
  2. com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL:日志的级别。可选值为OFF,SERVER,WARNING,INFO,FINE,FINER,FINEST,ALL
  3. com.mchange.v2.log.NameTransformer:日志按每个数据源类输出,还是按包。com.mchange.v2.log.PackageNames表示按包,默认的方式按类的方式
  4. com.mchange.v2.log.jdk14logging.suppressStackWalk:是否显示哪些类,哪些方法产生的日志,true表示不显示,false表示显示,默认值为true。

C3P0.properties的方式

##-------------------------------日志配置--------------------------------------##
# 日志的实现方式
com.mchange.v2.log.MLog=log4j
# 日志的级别,OFF,SERVER,WARNING,INFO,FINE,FINER,FINEST,ALL
com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL=All
# 日志按包输出
com.mchange.v2.log.NameTransformer=com.mchange.v2.log.PackageNames
# determine the class and method from which a log message was generated,当为true时,不打印这些日志信息
com.mchange.v2.log.jdk14logging.suppressStackWalk=true

加载配置项的方式                                                  

代码方式:通过new实例化dataSource,调用setXX方法。

技术分享
 1 package com.rain.core;
 2 
 3 import java.beans.PropertyVetoException;
 4 import java.io.IOException;
 5 import java.sql.Connection;
 6 import java.sql.ResultSet;
 7 import java.sql.SQLException;
 8 import java.sql.Statement;
 9 import java.util.HashMap;
 10 import java.util.Map;
 11 import javax.sql.DataSource;
 12 import com.mchange.v2.c3p0.ComboPooledDataSource;
 13 import com.mchange.v2.c3p0.DataSources;
 14 
 15 public class C3P0DataSourceSample {
 16 private static final String masterOraclejdbcUrl =
 17  "jdbc:oracle:thin:@localhost:1521:masteroracle";
 18 private static final String orclJdbcUrl = "jdbc:oracle:thin:@localhost:1521:orcl";
 19 private static final String driverClassName = "oracle.jdbc.driver.OracleDriver";
 20 private static final String user = "system";
 21 private static final String password = "password";
 22 
 23 public static void main(String[] args) throws Exception {
 24  // 创建数据源对象
 25  ComboPooledDataSource dataSource = createByInitInstance();
 26  // 配置数据源
 27 // configDataSource(dataSource);
 28  // 打印数据源信息
 29  printDataSourceInfo(dataSource);
 30  // 运行测试用例
 31  runSQLTest(dataSource);
 32  }
 33 
 34 /** -------------------------创建数据源------------------------- **/
 35 /**
 36  * 通过实例化的方式来获取数据源
 37  * 
 38  * @return
 39  * @throws PropertyVetoException
 40  * @throws SQLException
 41 */
 42 public static ComboPooledDataSource createByInitInstance()
 43  throws PropertyVetoException, SQLException {
 44  // 创建实例
 45  ComboPooledDataSource dataSource = new ComboPooledDataSource("");
 46  // 连接时配置
 47 // dataSource = connDatabaseConfig(dataSource, "masterOracle");
 48  return dataSource;
 49  }
 50 
 51 /**
 52  * 创建多个数据源,每个数据源通过名字区分
 53  * 
 54  * @return
 55  * @throws IOException
 56  * @throws SQLException
 57  * @throws PropertyVetoException
 58 */
 59 public static ComboPooledDataSource createMultiDataSource()
 60  throws IOException, SQLException, PropertyVetoException {
 61  // 创建数据库实例masterOracle
 62  ComboPooledDataSource masterOracleDataSource = new ComboPooledDataSource("masterOracle");
 63  // 连接时配置masterOracle数据源
 64  masterOracleDataSource = connDatabaseConfig(masterOracleDataSource, "masterOracle");
 65  // 创建数据库实例orcl
 66  ComboPooledDataSource orclDataSource = new ComboPooledDataSource("orcl");
 67  // 连接时配置orcl数据源
 68  orclDataSource = connDatabaseConfig(orclDataSource, "orcl");
 69  // 执行测试语句
 70  runSQLTest(masterOracleDataSource);
 71  // 执行测试语句
 72  runSQLTest(orclDataSource);
 73  return masterOracleDataSource;
 74  }
 75 
 76 /**
 77  * 通过DataSources工厂方式建立连接
 78  * 
 79  * @return
 80  * @throws SQLException
 81 */
 82 public static DataSource createByFactory() throws SQLException {
 83  // 创建unpooled的数据源
 84  DataSource ds_unpooled =
 85   DataSources.unpooledDataSource(masterOraclejdbcUrl, user, password);
 86  // pooled数据源的参数
 87  Map<String, String> paramMap = new HashMap<>();
 88  ComboPooledDataSource pooled =
 89   (ComboPooledDataSource) DataSources.pooledDataSource(ds_unpooled, paramMap);
 90  runSQLTest(pooled);
 91  pooled.close();
 92  DataSources.destroy(pooled);
 93  return pooled;
 94  }
 95 
 96 /** -----------------------配置数据源----------------------------- **/
 97 /**
 98  * 配置数据源
 99  * 
100  * @param dataSource
101  * @return
102  * @throws PropertyVetoException
103 */
104 public static ComboPooledDataSource configDataSource(ComboPooledDataSource dataSource)
105  throws PropertyVetoException {
106  // 连接数据库的必要属性
107  connDatabaseConfig(dataSource,"masterOracle");
108  // 连接池的相关配置
109  connPoolConfig(dataSource);
110  // 连接对象的生命周期配置
111  connAgeConfig(dataSource);
112  // 测试连接的配置
113  connTestConfig(dataSource);
114  // statement对象的配置
115  statementConfig(dataSource);
116  // 重连配置
117  reconnConfig(dataSource);
118  // 连接的监听类配置
119  connListenerConfig(dataSource);
120  // 事务的配置
121  tranConfig(dataSource);
122  // 调试模式
123  debugMode(dataSource);
124  // 线程配置
125  threadConfig(dataSource);
126  return dataSource;
127  }
128 
129 
130 
131 /**
132  * 连接池的配置 initialPoolSize:连接池的初始值 maxPoolSize:连接池的最大值 minPoolSize:连接池的最小值
133  * 
134  * @param dataSource
135 */
136 private static void connPoolConfig(ComboPooledDataSource dataSource) {
137  // 连接池的初始值,默认值为3
138  dataSource.setInitialPoolSize(10);
139  // 连接池的最大值,默认值为0
140  dataSource.setMaxPoolSize(20);
141  // 连接池的最小值,最小值为3
142  dataSource.setMinPoolSize(1);
143  // 连接池的递增值,默认值为3
144  dataSource.setAcquireIncrement(5);
145  }
146 
147 /**
148  * 连接池生命周期配置,连接池首先从数据库中获取连接,用户请求时从连接池中获取连接。默认值为0,表示永不过期。 maxConnectionAge:
149  * 连接对象生命的最大值,超过此时间,连接池会销毁连接对象,连接池变小。单位为秒,建议设置1800或更多 maxIdleTime:
150  * 空闲连接在连接池中的超时时间,超过此时间,连接池将会销毁连接对象。单位为秒,建议设置1800或更多
151  * maxIdleTimeExcessConnections:当连接池不处于过载状态时,空闲连接对象生命的最大值。
152  * unreturnedConnectionTimeout:当连接对象在一定时间内无法回收,则创建新连接对象,销毁旧连接对象
153  * 
154  * @param dataSource
155 */
156 private static void connAgeConfig(ComboPooledDataSource dataSource) {
157  // 连接对象生命的最大值,它指绝对时间。从创建开始时计算,默认值为0
158  dataSource.setMaxConnectionAge(10 * 60 * 60);
159  // 空闲连接的超时时间,从连接池变为空闲状态开始计算
160  dataSource.setMaxIdleTime(1800);
161  // 空闲连接对象生命的最大值
162  dataSource.setMaxIdleTimeExcessConnections(60);
163  // 连接对象的最大使用时间,设置为2小时
164  dataSource.setUnreturnedConnectionTimeout(2 * 60 * 60);
165  }
166 
167 
168 /**
169  * 连接测试配置。 automaticTestTable:测试连接时使用的数据库表 ,默认值为null。connectionTesterClassName:测试连接时使用的类名称
170  * idleConnectionTestPeriod:测试连接间隔时间。在此段时间内不进行连接测试。 preferredTestQuery:连接测试使用的SQL语句。默认语句为select
171  * 1 from dual。 testConnectionOnCheckin:从连接池回收连接对象时测试连接。默认值为false
172  * testConnectionOnCheckOut:从连接池取出连接对象时测试连接。默认值为false。
173  * forceSynchronousCheckins:连接池回收连接对象时是同步,还是异步,默认是异步。默认值为false
174  * 
175  * @param dataSource
176  * @throws PropertyVetoException
< 




                                        

热心网友 时间:2022-05-02 02:28

你先进入页眉页脚编辑状态,然后在“设计”里有页码功能
第一篇的设置是在编号功能里选择自定义,在选择好“一,二,三。。。。”后在示例框的数字前面输入“第”后面输入“篇”就可以了。

热心网友 时间:2022-05-02 03:46

在你需要跳转的地方插入书签或者是超链接就可以了。

热心网友 时间:2022-05-02 05:21

编辑页脚那里有吧,
自定义编号(与项目号类似)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
个达尔优破鼠标,请问怎么调才玩着顺 智能4k电视哪个牌子好 鼠标连点怎么破 破鼠标简直气死我了 三星4k电视使用一次光纤接口就坏了,怎么办? 破 鼠标!!是不是所有鼠标 只要稍微一接触不良 就停用 必须重起机子呢... 原装三星液晶屏4k惠普电视机多少钱 2015年欧元对换人民币汇率下滑到多少呢 2015年1月下旬欧元兑人民币汇率还能不能上涨 欧元兑换人民币汇率2015年3月份底会回到7吗? 【帮忙啦】英文名想把琳字带进去 怎样写会比较好看呢 lin这样太普通 刚买了优游胶原蛋白肽,好贵,值得不? 柏兰碧胶原蛋白贵不贵? 现在的胶原蛋白贵不贵呢?哪里有卖比较纯的好的牌子?试过的姐妹可以帮忙推荐一下 胶原蛋白贵不贵呢?网上有卖的吗?哪个品牌的效果不错呢? 为什么胶原蛋白饮料都这么贵,是有什么奥秘嘛? 定冠词和不定冠词的用法具体有哪些? 胶原蛋白的价格贵么? 。 在非常炎热的夏天,孕妇可以在空调屋子里面吗? tst胶原蛋白贵吗?多少钱一盒? 国珍胶原蛋白价格 贵不贵 诺特胶原蛋白能提高免疫力吗?胶原蛋白贵不贵? 空调是否对孕妇身体有害? 英语不定冠词的用法 胶原蛋白一盒多少钱 空调对孕妇有影响吗? 胶原蛋白贵吗? 梦见同一架飞机,自己平安,亲人却离去了 新买的空调放了几个小时就用,对孕妇有没有伤害 昨晚梦到坠机全过程,,意味啥呢 我的世界1.7.2怎么驯服豹猫 我的世界创造手机版怎么驯服豹猫 我的世界豹猫怎么驯服 豹猫吃什么 酱鸡叉骨怎么做如何做好吃 华为MYA-TL10如何开取3G网络 华为mya-tl10怎么退卡? 华为mya-tl10能不能用nfc? SSN-I9500GSMH 这个型号的机子,我怎么查真伪? 华为MYA-TL10怎么把软件存SD卡? 华为Mya Tl10手机怎么有两个sim卡还能插sd卡吗? mya-tl10怎么格式化 mya-tl10型号4g的网络突然变成2g,怎么换回4g? 节气门密封圈烂了还可以继续使用吗 如何判别密封圈损坏,如何预防 曲轴箱通风管泄漏或密封圈损坏 汽车减震密封圈怎么弄坏 水池密封圈动不了了 液压油缸密封圈坏了有什么影响 机油散热器密封圈能用多久 叉车密封圈容易破什么原因?