主要是在xml文件中配置:
applicationContext.xml
jdbc.properties
1. applicationContext.xml中获取jdbc所需参数:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>jdbc.properties</value>
</property>
</bean>
2. 装配数据库连接,如有多个库源可写多个:
<!-- 数据源配置 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
<!--initialSize: 初始化连接-->
<property name="initialSize" value="15"/>
<!--maxIdle: 最大空闲连接-->
<property name="maxIdle" value="10"/>
<!--minIdle: 最小空闲连接-->
<property name="minIdle" value="8"/>
<!--maxActive: 最大连接数量-->
<property name="maxActive" value="100"/>
<!--removeAbandoned: 是否自动回收超时连接-->
<property name="removeAbandoned" value="true"/>
<!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->
<property name="removeAbandonedTimeout" value="180"/>
<!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒-->
<property name="maxWait" value="60000"/>
<property name="poolPreparedStatements" value="false"/>
<property name="defaultAutoCommit" value="true"/>
</bean>
<!-- 卡口数据源配置 -->
<bean id="dataSourceKK" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driverKK}"/>
<property name="url" value="${urlKK}"/>
<property name="username" value="${usernameKK}"/>
<property name="password" value="${passwordKK}"/>
<!--initialSize: 初始化连接-->
<property name="initialSize" value="15"/>
<!--maxIdle: 最大空闲连接-->
<property name="maxIdle" value="10"/>
<!--minIdle: 最小空闲连接-->
<property name="minIdle" value="8"/>
<!--maxActive: 最大连接数量-->
<property name="maxActive" value="100"/>
<!--removeAbandoned: 是否自动回收超时连接-->
<property name="removeAbandoned" value="true"/>
<!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->
<property name="removeAbandonedTimeout" value="180"/>
<!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒-->
<property name="maxWait" value="60000"/>
<property name="poolPreparedStatements" value="false"/>
<property name="defaultAutoCommit" value="true"/>
</bean>
3. 配置数据源映射到指定xml(xml中包含多个sql xml文件地址)
此处配置了两个库
<!-- 配置数据源-->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation">
<value>config/ibatis/SqlMapConfig.xml</value>
</property>
</bean>
<!-- 配置卡口数据源 -->
<bean id="sqlMapClientKK" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="dataSourceKK"/>
<property name="configLocation">
<value>config/ibatis/SqlMapConfig.xml</value>
</property>
</bean>
4. 添加处理工具对象,程序中使用此对象工具来调用运行sql语句:
<!-- MYSQL数据库处理工具类-->
<bean id="dbHandler" class="com.cqjk.dbhandler.DBHandler">
<property name="sqlMapClient" ref="sqlMapClient"></property>
</bean>
<!-- ORACLE数据库处理工具类-->
<bean id="oracledbHandler" class="com.cqjk.dbhandler.OracleDBHandler">
<property name="sqlMapClient" ref="sqlMapClientKK"></property>
</bean>
5. SqlMapConfig.xml 中指定需要用到的sql集合的xml文件:
<sqlMapConfig>
<sqlMap resource="config/ibatis/flow_and_speed.xml"/>
<sqlMap resource="config/ibatis/syn_bayone.xml"/>
</sqlMapConfig>
flow_and_speed.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<!-- 实时流量 -->
<typeAlias alias="TrafficReal" type="com.cqjk.bean.TrafficReal"/>
<!-- 车辆实时流量 -->
<typeAlias alias="CarRealModel" type="com.cqjk.bean.CarRealModel"/>
<!-- 更新流量 -->
<update id="updateRealFlow" parameterClass="TrafficReal">
update trrd_traffic_real set
real_time = #real_time#,
zh = #zh#,
dl = #dl#,
xkc = #xkc#,
dxc = #dxc#,
hc = #hc#,
qtc = #qtc#,
speed = #speed#
where begin_toll_code = #begin_toll_code# and end_toll_code = #end_toll_code# and derection = #derection#
</update>
<!-- 删除过期数据 -->
<select id="flowList" parameterClass="TrafficReal" resultClass="java.lang.Integer">
select count(*) from trrd_traffic_real where real_time < #beginTime#
</select>
<!-- 小时流量入库 -->
<insert id="insertTollStationHourFlow" parameterClass="TrafficReal">
insert into trrd_traffic_real_hour(real_time,begin_toll_code,end_toll_code,zh,dl,xkc,dxc,hc,qtc,speed,trafficflow_congestion_lvl,sjly,avg_congestion_lvl,compre_congestion_lvl)
values(#real_time#,#begin_toll_code#,#end_toll_code#,#zh#,#dl#,#xkc#,#dxc#,#hc#,#qtc#,#speed#,#trafficflow_congestion_lvl#,#sjly#,#avg_congestion_lvl#,#compre_congestion_lvl#)
</insert>
</sqlMap>
调用执行sql:
/**
* ORACLE
*/
private OracleDBHandler oracleDbHandler;
/**
* MYSQL
*/
private DBHandler dbHandler;
{
//获取对象
oracleDbHandler = (OracleDBHandler) SpringInit.ctx.getBean("oracledbHandler");
dbHandler = (DBHandler) SpringInit.ctx.getBean("dbHandler");
}
//调用 Integer dataCount = (Integer) oracleDbHandler.queryObject("flowList", null);
public class OracleDBHandler
{
private SqlMapClient sqlMapClient;
/**
* 数据查询
*
* @param sqlID ibatis中配置的SQL ID
* @param param 查询条件参数对象
* @return 数据结果
*/
public Object queryObject(String sqlID, Object param) throws CustomException
{
Object object = null;
try
{
object = sqlMapClient.queryForObject(sqlID, param);
}
catch (SQLException e)
{
throw new CustomException("DBHandler | queryObject Exception:", e);
}
return object;
}}