急求:ibatis2.0+SqlServer2005 连接池如何配置

xiejinz 2011-04-08 10:37:34
急求:ibatis2.0+SqlServer2005 连接池如何配置
;项目现在需要用了,给力的我把分全部塞给你,谢谢!!!
开始没有用到连接池,现在要用的话,要不要加包加类???
在网上找了些相关资料,都没有成功,不太懂;
最好要配在 spring 配置文件中的,
...全文
174 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-04-08
  • 打赏
  • 举报
回复
private BasicDataSource legacyDbcpConfiguration(Map map) {   
BasicDataSource basicDataSource = null;
if (map.containsKey("JDBC.Driver")) {
basicDataSource = new BasicDataSource();
String driver = (String) map.get("JDBC.Driver");
String url = (String) map.get("JDBC.ConnectionURL");
String username = (String) map.get("JDBC.Username");
String password = (String) map.get("JDBC.Password");
String validationQuery = (String) map.get("Pool.ValidationQuery");
String maxActive = (String) map.get("Pool.MaximumActiveConnections");
String maxIdle = (String) map.get("Pool.MaximumIdleConnections");
String maxWait = (String) map.get("Pool.MaximumWait");

basicDataSource.setUrl(url);
basicDataSource.setDriverClassName(driver);
basicDataSource.setUsername(username);
basicDataSource.setPassword(password);

if (notEmpty(validationQuery)) {
basicDataSource.setValidationQuery(validationQuery);
}

if (notEmpty(maxActive)) {
basicDataSource.setMaxActive(Integer.parseInt(maxActive));
}

if (notEmpty(maxIdle)) {
basicDataSource.setMaxIdle(Integer.parseInt(maxIdle));
}

if (notEmpty(maxWait)) {
basicDataSource.setMaxWait(Integer.parseInt(maxWait));
}

}
return basicDataSource;
}

private BasicDataSource legacyDbcpConfiguration(Map map) {
BasicDataSource basicDataSource = null;
if (map.containsKey("JDBC.Driver")) {
basicDataSource = new BasicDataSource();
String driver = (String) map.get("JDBC.Driver");
String url = (String) map.get("JDBC.ConnectionURL");
String username = (String) map.get("JDBC.Username");
String password = (String) map.get("JDBC.Password");
String validationQuery = (String) map.get("Pool.ValidationQuery");
String maxActive = (String) map.get("Pool.MaximumActiveConnections");
String maxIdle = (String) map.get("Pool.MaximumIdleConnections");
String maxWait = (String) map.get("Pool.MaximumWait");

basicDataSource.setUrl(url);
basicDataSource.setDriverClassName(driver);
basicDataSource.setUsername(username);
basicDataSource.setPassword(password);

if (notEmpty(validationQuery)) {
basicDataSource.setValidationQuery(validationQuery);
}

if (notEmpty(maxActive)) {
basicDataSource.setMaxActive(Integer.parseInt(maxActive));
}

if (notEmpty(maxIdle)) {
basicDataSource.setMaxIdle(Integer.parseInt(maxIdle));
}

if (notEmpty(maxWait)) {
basicDataSource.setMaxWait(Integer.parseInt(maxWait));
}

}
return basicDataSource;
} 这段代码的目的是读取ibatis中的sqlMapConfig.xml配置文件的,下面是这个配置文件的具体长像:

Sqlmapconfig配置文件代码
<transactionManager type="JDBC">
<dataSource type="DBCP">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
<property name="JDBC.ConnectionURL" value="jdbc:mysql://xxx" />
<property name="JDBC.Username" value="root" />
<property name="JDBC.Password" value="xxx" />
<property name="Pool.MaximumActiveConnections" value="15"/>
<property name="Pool.MaximumIdleConnections" value="15"/>
<property name="Pool.MaximumWait" value="1000"/>
<property name="Pool.RemoveAbandoned" value="true"/>
<property name="Pool.RemoveAbandonedTimeout" value="1"/>
<property name="asdfaf" value="1"/>
</dataSource>
</transactionManager>

<transactionManager type="JDBC">
<dataSource type="DBCP">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
<property name="JDBC.ConnectionURL" value="jdbc:mysql://xxx" />
<property name="JDBC.Username" value="root" />
<property name="JDBC.Password" value="xxx" />
<property name="Pool.MaximumActiveConnections" value="15"/>
<property name="Pool.MaximumIdleConnections" value="15"/>
<property name="Pool.MaximumWait" value="1000"/>
<property name="Pool.RemoveAbandoned" value="true"/>
<property name="Pool.RemoveAbandonedTimeout" value="1"/>
<property name="asdfaf" value="1"/>
</dataSource>
</transactionManager> 可以看到源代码里只有以下几项对dbcp的配置是可以在ibatis中配置的,其余都是用的dbcp的默认值:

String validationQuery = (String) map.get("Pool.ValidationQuery");
String maxActive = (String) map.get("Pool.MaximumActiveConnections");
String maxIdle = (String) map.get("Pool.MaximumIdleConnections");
String maxWait = (String) map.get("Pool.MaximumWait");

结论:不知道是否是我的遗漏,但是看了源代码确实是只对了这四个配置项进行了处理,其他的没有提到。实际影响到我的后果就是我对

<property name="Pool.RemoveAbandoned" value="true"/>
<property name="Pool.RemoveAbandonedTimeout" value="1"/>

这两项的配置由于ibatis的阻碍,dbcp实际上是看不到的,真不知道ibatis的这个版本是怎么回事,感觉没有完全用上DBCP,不知道接下来的版本会不会有所改进。
xiejinz 2011-04-08
  • 打赏
  • 举报
回复
忘了说了,我这里外网有限制,就可以上个论坛,没有百度什么的上了,呵呵
xiejinz 2011-04-08
  • 打赏
  • 举报
回复
这也是在网上找的,看着挺像可以,但就是配不出来,有没有可以指教一下的咯??
<beans>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>

<!-- 这个也不会填 -->
<value>classpath*:config/jdbc.properties</value>
</list>
</property>
</bean>

<!-- ========================= RESOURCE DEFINITIONS ========================= -->
<!-- 这里这个类找不到 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="properties">
<props>
<prop key="c3p0.minPoolSize">1</prop>
<prop key="hc3p0.maxPoolSize">10</prop>
<prop key="hc3p0.timeout">60</prop>
<prop key="c3p0.max_statement">50</prop>
<prop key="c3p0.testConnectionOnCheckout">true</prop>
<prop key="hibernate.c3p0.testConnectionOnCheckout">false</prop>
<prop key="user">${jdbc.username}</prop>
<prop key="password">${jdbc.password}</prop>
</props>
</property>
</bean>

<!-- Transaction manager for a single JDBC DataSource -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>

<!-- SqlMap setup for iBATIS Database Layer -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:config/sql-map-config.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>

<bean id="txProxyTemplate" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
lazy-init="true">
<property name="transactionManager"><ref bean="transactionManager" /></property>
<!--ָķ˂ϱ˴є-->
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
「已注销」 2011-04-08
  • 打赏
  • 举报
回复
参考
自己测试
xiejinz 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fredrickhu 的回复:]
SQL code
private BasicDataSource legacyDbcpConfiguration(Map map) {
BasicDataSource basicDataSource = null;
if (map.containsKey("JDBC.Driver")) {
basicDataSource = new BasicDataSo……
[/Quote]

我是用spring 管理的,还有自己写java代码去获取连接吗,
再一个,我要把连接池的代码,配到spring 里面去管理,不然开事务怎么办,要有“ dataSource ” 啊
课程简介:本项目实战课程,从基础的项目需求,到项目模块编码,均采用实战教学。目标是让学员学习项目开发的基础流程,学习市面上主流框架SpringBoot、SpringMvc、Spring、MyBatis等实战开发核心技术点。熟悉企业级项目管理与构建,提升学员代码编码能力和实战项目编码经验。养成规范化、标准化的代码编写习惯和良好的技术文档习惯。相信通过整个项目的学习和编码,学习Java项目开发中的难点技术,深刻理解Java编程中的技术原理,以帮助学员走向高手之路。 项目技术栈: - 采用SpringBoot简化商城系统的初始搭建以及开发过程- 开发环境采用Maven实施多模块项目构建,采用Git进行项目版本管理;- 采用SpringMVC+Spring+IBatis完成项目的整合- 采用Mysql作为数据库存储,druid配置数据库连接池- 采用FastDFS文件储存系统文件存储,完成广告图片、商品图片的上传和存储- 使用ECharts根据后台查询数据生成图表- 使用POI实现了商城盈利状况的Excel表格导出。- 商品的详情页使用Thymeleaf完成页面静态化,减少页面数据展示延迟- 项目中使用SpringBoot下的Aop + 自定义注解完成用户行为记录,日志采集- 后台管理系统使用Shiro实现登录验证和权限管理(超级管理员、管理员、产品编辑员) 项目部分截图:            

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧