import javax.sql.DataSource; import org.springframework.beans.BeansException; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.orm.hibernate3.HibernateJdbcException; import com.vtradex.thorn.server.exception.BusinessException; /** * @description 获得数据源工厂类 */ public class DataSourceFactory implements ApplicationContextAware{ private static ApplicationContext ac; public static DataSource getDataSourceFactory(String dataSourceName){ DataSource ds = null; try{ ds = (DataSource)ac.getBean(dataSourceName); }catch(NoSuchBeanDefinitionException e) { throw new BusinessException("dataSource.dataBase.unActive", new String[]{dataSourceName}); }catch(HibernateJdbcException ex){ throw new BusinessException("dataSource.dataBase.connect.erro", new String[]{dataSourceName}); } return ds; } public void setApplicationContext(ApplicationContext ac) throws BeansException { DataSourceFactory.ac = ac; } }
/**使用案例*/ public void execute(){ Connection connection = null; PreparedStatement pStatement = null;// PreparedStatement PreparedStatement upStatement = null; ResultSet resultSet = null;// ResultSet try{ connection = getConnection(); connection.setAutoCommit(Boolean.FALSE); pStatement = connection.prepareStatement("select name from a"); resultSet = pStatement.executeQuery(); while(resultSet.next()){ String name = resultSet.getString("name"); } java.sql.Timestamp timestamp = new java.sql.Timestamp(new Date().getTime()); // 回写中间表信息 String updateMess = "UPDATE " + MiddleTableName.ORDERACCEPTNAME + " SET STATUS = ?, EXCEPTION_MESS = ?,BACK_TIME=? WHERE ID = ?"; upStatement = connection.prepareStatement(updateMess); if (haveExce) { if ("NO_EXIST".equals(errerType)) { upStatement.setInt(1, 4); } else { upStatement.setInt(1, 0); } } else { upStatement.setInt(1, 3); } upStatement.setString(2, exceDesc); upStatement.setTimestamp(3,timestamp); upStatement.setLong(4, id); upStatement.execute(); connection.commit(); if (null != upStatement) { upStatement.close(); } }catch(Exception e) { System.out.println(e.getLocalizedMessage()); try { connection.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } }finally{ free(resultSet, pStatement, connection); } } public Connection getConnection() { Connection conn = null; DataSource ds = DataSourceFactory.getDataSourceFactory("middleTble"); try { conn = ds.getConnection(); } catch (SQLException e) { e.printStackTrace(); } return conn; } //关闭资源 public void free(ResultSet resultSet, Statement statement, Connection connection) { if (null != resultSet) { try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } finally { if (null != statement) { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (null != connection) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } }else{ if (null != statement) { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (null != connection) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } }else{ try { if (null != connection) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }
数据源配置文件xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="middleTble" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>oracle.jdbc.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@192.168.12.111:1521:orcl</value> </property> <property name="username"> <value>middleTable</value> </property> <property name="password"> <value>middleTable</value> </property> <!-- 连接池启动时的初始值 --> <property name="initialSize" value="30"/> <!-- 连接池的最大值 --> <property name="maxActive" value="500"/> <!-- 最大空闲值.当经过一个高峰时间后, 连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 --> <property name="maxIdle" value="2"/> <!-- 最小空闲值.当空闲的连接数少于阀值时, 连接池就会预申请去一些连接,以免洪峰来时来不及申请 --> <property name="minIdle" value="1"/> </bean> </beans>
相关推荐
- **接口测试**:位于中间层,主要针对API接口进行测试,确保服务间交互正确。 - **UI测试**:位于顶层,数量最少,成本最高,关注用户界面与交互逻辑。 2. **成本分析**: - **工具局限性**:虽然像Postman和...
- **分库分表**:通过将数据分散到不同的物理表或库来提高并行处理能力。 - **DB虚拟化**:提供统一的数据访问接口,隐藏底层数据库的具体实现。 - **DB保护**:增强数据的安全性和可靠性。 #### 为什么选择Node.js...
描述中的信息虽然简洁,但进一步确认了这是一个关于NDIS中间驱动程序的实例,可能是通过实际代码或者案例来讲解相关概念和技术。 标签中包含“ndis”、“驱动”和“资源达人分享计划”,这表明这是一个与NDIS驱动...
"新浪微博分享"功能就是一个典型的案例,它允许用户将感兴趣的内容快速、便捷地分享到自己的新浪微博账号,以此扩大信息传播范围,增强互动性。在这个过程中,通常会涉及到第三方服务的集成,比如友盟(Umeng)这样...
在实际开发中,首先需要在`build.gradle`中添加友盟SDK的依赖,然后在代码中初始化友盟SDK,并根据需求配置第三方登录和分享的接口。在测试和发布时,需要注意混淆规则的配置,确保第三方库的功能不受影响。同时,...
在我们的案例中,我们需要绑定点击事件到“中间按钮”,以便弹出分享按钮。 3. **CSS样式与动画**:为了实现“圆形”和“向右展示”的效果,我们需要使用CSS来设计按钮的外观。CSS允许我们定义元素的大小、颜色、...
对于本案例中的"中间logo"需求,我们可以通过ZXing库的自定义扩展来实现。 1. **安装ZXing库**:首先,你需要将ZXing库添加到你的项目中。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml ...
OAuth2.0作为一种开放标准协议,其设计初衷是为了允许用户授权一个应用程序访问他们存储在另一个服务上的信息,而无需分享自己的凭证。这种机制使得数据和服务能够在不同的应用程序之间无缝流动,同时也保障了用户...
总的来说,"基于SpringBoot游戏分享网站"项目展示了Java Web开发的全面性,涵盖了从前端到后端,从设计到实现的全过程,是学习和实践现代Web开发技术的好案例。通过这个项目,开发者可以深入理解SpringBoot、SSM框架...
在Android开发中,生成二维码是一项常见的...总的来说,Zxing库为Android开发者提供了简单易用的接口,使得生成二维码变得非常方便。通过上述步骤,我们可以灵活地生成各种定制化的二维码,满足不同的应用场景需求。
在这个特定的案例中,我们有一个强大的工具类,能够将LOGO集成到二维码的中心,增加了二维码的视觉吸引力和辨识度。以下是关于这个主题的详细知识点: 1. **二维码(Quick Response Code)**: 二维码是一种二维条形...
标题中的"JAVA经验分享.zip"表明这是一个关于Java编程语言的经验分享集合,可能包含了代码示例、教程、项目案例等内容。描述中的"传送门"可能是暗示这些资料能引导学习者进入深入理解Java的世界。 标签"java"进一步...
在这个特定的案例中,我们讨论的是一个由徐敬标分享的C# .NET邮件发送程序,该程序可以用于实现邮件发送和验证功能。邮件服务在现代应用程序中扮演着重要的角色,例如用户注册时的确认邮件、密码重置请求、订阅通知...
总的来说,这个项目结合了SpringBoot的强后端能力与Vue.js的高效前端渲染,提供了完整的文件分享解决方案,同时也涉及到了权限控制、远程文件操作等复杂功能,是学习和实践现代Web开发技术的好案例。
6. **结果后处理**:Isight提供强大的可视化工具,用于展示和分析优化过程中的中间结果和最终结果。学习如何有效地解读和展示这些信息,对于理解优化结果至关重要。 7. **案例实践**:教程中可能包含多个实际案例,...
2. **多对多关联映射**:讲解如何处理复杂的数据关系,例如通过中间表进行多对多的映射。 3. **动态SQL**:深入讲解`<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<foreach>`等元素的使用,以构建灵活...
本文实例为大家分享了python读写json数据的具体代码,供大家参考,具体内容如下 案例: 在web应用中常常用到json数据进行传输数据,本质上是字典类型数据转换成字符串,通过字符串进行网页传输,然后把接收到的...
1. **Flink应用实例**:PPT可能涵盖了Flink在电商、金融、物联网等领域的具体应用案例,例如实时推荐系统、交易欺诈检测、物联网设备数据处理等。 2. **Flink作业部署**:可能涉及YARN、Kubernetes、Mesos等集群...