`

中间表接口案例分享001

 
阅读更多
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>

 

分享到:
评论

相关推荐

    基于python的接口自动化测试框架讲解用PPT

    - **接口测试**:位于中间层,主要针对API接口进行测试,确保服务间交互正确。 - **UI测试**:位于顶层,数量最少,成本最高,关注用户界面与交互逻辑。 2. **成本分析**: - **工具局限性**:虽然像Postman和...

    基于Node.js的数据库中间层 高清非扫描版 文字

    - **分库分表**:通过将数据分散到不同的物理表或库来提高并行处理能力。 - **DB虚拟化**:提供统一的数据访问接口,隐藏底层数据库的具体实现。 - **DB保护**:增强数据的安全性和可靠性。 #### 为什么选择Node.js...

    NDIS中间驱动程序的一个很好的例子

    描述中的信息虽然简洁,但进一步确认了这是一个关于NDIS中间驱动程序的实例,可能是通过实际代码或者案例来讲解相关概念和技术。 标签中包含“ndis”、“驱动”和“资源达人分享计划”,这表明这是一个与NDIS驱动...

    新浪微博分享

    "新浪微博分享"功能就是一个典型的案例,它允许用户将感兴趣的内容快速、便捷地分享到自己的新浪微博账号,以此扩大信息传播范围,增强互动性。在这个过程中,通常会涉及到第三方服务的集成,比如友盟(Umeng)这样...

    友盟第三方登录分享的包

    在实际开发中,首先需要在`build.gradle`中添加友盟SDK的依赖,然后在代码中初始化友盟SDK,并根据需求配置第三方登录和分享的接口。在测试和发布时,需要注意混淆规则的配置,确保第三方库的功能不受影响。同时,...

    jquery点击弹出可分享的按钮效果

    在我们的案例中,我们需要绑定点击事件到“中间按钮”,以便弹出分享按钮。 3. **CSS样式与动画**:为了实现“圆形”和“向右展示”的效果,我们需要使用CSS来设计按钮的外观。CSS允许我们定义元素的大小、颜色、...

    java二维码生成(带中间logo)

    对于本案例中的"中间logo"需求,我们可以通过ZXing库的自定义扩展来实现。 1. **安装ZXing库**:首先,你需要将ZXing库添加到你的项目中。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml ...

    基于springboot游戏分享网站.zip

    总的来说,"基于SpringBoot游戏分享网站"项目展示了Java Web开发的全面性,涵盖了从前端到后端,从设计到实现的全过程,是学习和实践现代Web开发技术的好案例。通过这个项目,开发者可以深入理解SpringBoot、SSM框架...

    Android Zxing生成二维码经典案例分享

    在Android开发中,生成二维码是一项常见的...总的来说,Zxing库为Android开发者提供了简单易用的接口,使得生成二维码变得非常方便。通过上述步骤,我们可以灵活地生成各种定制化的二维码,满足不同的应用场景需求。

    java二维码工具类,中间带LOGO的,很强大

    在这个特定的案例中,我们有一个强大的工具类,能够将LOGO集成到二维码的中心,增加了二维码的视觉吸引力和辨识度。以下是关于这个主题的详细知识点: 1. **二维码(Quick Response Code)**: 二维码是一种二维条形...

    JAVA经验分享.zip

    标题中的"JAVA经验分享.zip"表明这是一个关于Java编程语言的经验分享集合,可能包含了代码示例、教程、项目案例等内容。描述中的"传送门"可能是暗示这些资料能引导学习者进入深入理解Java的世界。 标签"java"进一步...

    C# .net Emall邮件发送程序代码邮件验证前身徐敬标分享

    在这个特定的案例中,我们讨论的是一个由徐敬标分享的C# .NET邮件发送程序,该程序可以用于实现邮件发送和验证功能。邮件服务在现代应用程序中扮演着重要的角色,例如用户注册时的确认邮件、密码重置请求、订阅通知...

    基于SpringBoot和Vue构建的文件分享系统,包括文件的上传与下载,文件的权限管理,远程文件管理等.zip

    总的来说,这个项目结合了SpringBoot的强后端能力与Vue.js的高效前端渲染,提供了完整的文件分享解决方案,同时也涉及到了权限控制、远程文件操作等复杂功能,是学习和实践现代Web开发技术的好案例。

    Isight培训初级教程.zip

    6. **结果后处理**:Isight提供强大的可视化工具,用于展示和分析优化过程中的中间结果和最终结果。学习如何有效地解读和展示这些信息,对于理解优化结果至关重要。 7. **案例实践**:教程中可能包含多个实际案例,...

    mybatis中文文档

    2. **多对多关联映射**:讲解如何处理复杂的数据关系,例如通过中间表进行多对多的映射。 3. **动态SQL**:深入讲解`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;foreach&gt;`等元素的使用,以构建灵活...

    python如何读写json数据

    本文实例为大家分享了python读写json数据的具体代码,供大家参考,具体内容如下 案例:  在web应用中常常用到json数据进行传输数据,本质上是字典类型数据转换成字符串,通过字符串进行网页传输,然后把接收到的...

    mixblog:由中间人制作的soundcloud播放列表博客

    这个项目由一个中间人开发,它允许用户以博客的形式分享和探索SoundCloud上的音乐播放列表,为音乐爱好者提供了一个互动的新方式。 【描述】中的“抓了一些东西”可能指的是该项目使用了数据抓取或API接口来获取...

Global site tag (gtag.js) - Google Analytics