首先 要写好配置文件 applicationContext-ibatis.xml
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<!-- 这里支持多种寻址方式:classpath和file -->
<value>classpath:/config/properties/jdbc.properties</value>
<value>classpath:/config/properties/dev.properties</value>
</list>
</property>
</bean>
<bean id="masterDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init">
<property name="driverClassName">
<value>${kjds.jdbc.driverClassName}</value>
</property>
<property name="url">
<value>${kjds.jdbc.url}</value>
</property>
<property name="username">
<value>${kjds.jdbc.username}</value>
</property>
<property name="password">
<value>${kjds.jdbc.password}</value>
</property>
<property name="maxActive" value="${kjds.jdbc.maxActive}" />
<property name="initialSize" value="${kjds.jdbc.initialSize}" />
<property name="maxWait" value="${kjds.jdbc.maxWait}" />
<property name="minIdle" value="${kjds.jdbc.minIdle}" />
<property name="timeBetweenEvictionRunsMillis" value="${kjds.jdbc.timeBetweenEvictionRunsMillis}" />
<property name="minEvictableIdleTimeMillis" value="${kjds.jdbc.minEvictableIdleTimeMillis}" />
<property name="validationQuery" value="${kjds.jdbc.validationQuery}" />
<property name="testWhileIdle" value="${kjds.jdbc.testWhileIdle}" />
<property name="testOnBorrow" value="${kjds.jdbc.testOnBorrow}" />
<property name="testOnReturn" value="${kjds.jdbc.testOnReturn}" />
<!-- 开启Druid的监控统计功能 -->
<property name="filters" value="stat" />
</bean>
<!-- sqlMapClient config setting begin -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocations">
<list>
<value>classpath:/config/ibatis/sql-map-config-*.xml</value>
</list>
</property>
<property name="dataSource">
<ref bean="masterDataSource" />
</property>
<property name="lobHandler" ref="oracleLobHandler" />
</bean>
<bean id="sqlMapClientOrcl" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocations">
<list>
<value>classpath:/config/ibatis/sql-map-config-*.xml</value>
</list>
</property>
<property name="dataSource">
<ref bean="masterDataSourceOrcl" />
</property>
<property name="lobHandler" ref="oracleLobHandler" />
</bean>
<!-- sqlMapClient config setting end -->
<!-- transactionManager processing config setting begin -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="masterDataSource" />
</property>
<property name="globalRollbackOnParticipationFailure" value="false" />
</bean>
<aop:config>
<aop:pointcut id="serviceMethods"
expression="execution(* com.blemall.global.kjdsapi.*ServiceImpl.*(..)) ||
execution(* com.blemall.global.kjdsapi.*ServiceImpl.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="query*" read-only="true" />
<tx:method name="insert*" rollback-for="Exception"
propagation="REQUIRED" read-only="false" />
<tx:method name="update*" rollback-for="Exception"
propagation="REQUIRED" read-only="false" />
<tx:method name="remove*" rollback-for="Exception"
propagation="REQUIRED" read-only="false" />
<tx:method name="delete*" rollback-for="Exception"
propagation="REQUIRED" read-only="false" />
<tx:method name="*" rollback-for="Exception" propagation="REQUIRED"
read-only="false" />
</tx:attributes>
</tx:advice>
<!-- transactionManager processing config setting end -->
<aop:config>
<aop:pointcut id="othersServiceMethods"
expression="execution(* com.blemall.global.kjdsapi.*ServiceImpl.*(..)) ||
execution(* com.blemall.global.kjdsapi.*ServiceImpl.*(..))" />
<aop:advisor advice-ref="othersTxAdvice" pointcut-ref="othersServiceMethods" />
</aop:config>
<bean id="othersTransactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="masterDataSourceOrcl" />
</property>
<property name="globalRollbackOnParticipationFailure" value="false" />
</bean>
<tx:advice id="othersTxAdvice" transaction-manager="othersTransactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="query*" read-only="true" />
<tx:method name="insert*" rollback-for="Exception"
propagation="REQUIRED" read-only="false" />
<tx:method name="update*" rollback-for="Exception"
propagation="REQUIRED" read-only="false" />
<tx:method name="remove*" rollback-for="Exception"
propagation="REQUIRED" read-only="false" />
<tx:method name="delete*" rollback-for="Exception"
propagation="REQUIRED" read-only="false" />
<tx:method name="*" rollback-for="Exception" propagation="REQUIRED"
read-only="false" />
</tx:attributes>
</tx:advice>
<bean id="kjdsTestDao" class="com.blemall.global.kjdsapi.dao.impl.KjdsTestDaoImpl">
<property name="sqlMapClient" ref="sqlMapClientOrcl"></property>
</bean>
<!-- 配置orcal -->
<bean id="masterDataSourceOrcl" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName">
<value>${kjds.orcal.jdbc.driverClassName}</value>
</property>
<property name="url">
<value>${kjds.orcal.jdbc.url}</value>
</property>
<property name="username">
<value>${kjds.orcal.jdbc.username}</value>
</property>
<property name="password">
<value>${kjds.orcal.jdbc.password}</value>
</property>
</bean>
配置需要连接的数据库信息的properties ,内容如下
mysql数据库jdbc.properties 如下:
kjds.jdbc.driverClassName=com.mysql.jdbc.Driver
kjds.jdbc.username=账号
kjds.jdbc.password=密码
kjds.jdbc.url=jdbc:mysql://ip????/t_global?characterEncoding=UTF-8
kjds.jdbc.maxActive=20
kjds.jdbc.initialSize=1
kjds.jdbc.maxWait=60000
kjds.jdbc.minIdle=1
kjds.jdbc.timeBetweenEvictionRunsMillis=3000
kjds.jdbc.minEvictableIdleTimeMillis=300000
kjds.jdbc.validationQuery="SELECT 'x' FROM DUAL"
kjds.jdbc.testWhileIdle=true
kjds.jdbc.testOnBorrow=false
kjds.jdbc.testOnReturn=false
orcal数据库dev.properties 如下:
kjds.orcal.jdbc.driverClassName=oracle.jdbc.OracleDriver
kjds.orcal.jdbc.username=zhanghao
kjds.orcal.jdbc.password=mima
kjds.orcal.jdbc.url=jdbc:oracle:thin:@ip????:ORCL
要对com.blemall.global.kjdsapi.dao.impl.KjdsTestDaoImpl路径下的文件进行注入,注入访问的第二个数据库相关。
注入的名字 @Resource(name="sqlMapClientOrcl") 也就是配置文件的中的property里ref
<bean id="kjdsTestDao" class="com.blemall.global.kjdsapi.dao.impl.KjdsTestDaoImpl">
<property name="sqlMapClient" ref="sqlMapClientOrcl"></property>
</bean>
接下来要copy一份底层BaseDao,BaseDaoImpl,IBaseService和IBaseServiceImpl写成自己需要的名字 要把copy的BsaeDaoimpl注入的名字改为配置文件的中的property里ref一样的名字 如下所示:
@Repository("kjdsTestDao")
public class KjdsTestDaoImpl <T, PK extends Serializable> extends SqlMapClientDaoSupport implements IKjdsTestDao<T, PK> {
@Resource(name="sqlMapClientOrcl")
private SqlMapClient sqlMapClient;
@PostConstruct
public void init() { super.setSqlMapClient(this.sqlMapClient);
}
然后另写需要实现的dao daoImpl service和serviceImpl继承之前copy好的, 注意路径不要跟配置文件的路径写错
然后正常的在C层插入数据就可以了