日期:2014-05-16 浏览次数:20529 次
描述:在近期的项目中遇到了一个问题,调用存储过程时,本来想使用mybatis访问,但由于mybatis的复杂的XML文件
?
?配置及使用注解对以后更换访问方式的不方便性考虑,且在使用时只需要存入数据库对应的字段Map集合,就可以
?
? ? ? ? ?轻松的实现数据库的增、删、改、查。于是想到了SPring提供的访问Jdbc的模板,
?
? ? ? ? ?NamedParameterJdbcTemplate(?程安全的,可以同时被多个DAO调用,可通过Spring管理)类就可以轻松
?
?的实现数据库的字段与传入的参数进行绑定,并返回对应的Map类型的List集合(系统菜单和数据字典),通过遍
?
? ? ? ? ?历就可以轻松的实现对数据库的访问,具体的接口类和实现过程如下所示(事务管理暂未贴出):?
?
?
文件配置:(ApplicationContxet.xml关键部分)
?
? ? ? ? ?<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
? ? ? ? ? ? ? ? ?destroy-method="close">
? ? ? ? <property name="driverClass" value="${jdbc.driverClass}"/>
? ? ? ? <property name="jdbcUrl" value="${jdbc.jdbcUrl}"/>
? ? ? ? <property name="user" value="${jdbc.user}"/>
? ? ? ? <property name="password" value="${jdbc.password}"/>
? ? ? ?? <property name="maxIdleTime" value="${jdbc.maxIdleTime}"/>
? ? ? ? <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>
<property name="minPoolSize" value="${jdbc.minPoolSize}"/>
<property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>
? ? ? ?? <property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}"/>
? ? ? ? <property name="checkoutTimeout" value="${jdbc.checkoutTimeout}"/>
? ? ? ?? <property name="acquireIncrement" value="${jdbc.acquireIncrement}"/>
? ? </bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg index="0" ref="dataSource"/>
</bean>
<bean id="jdbcDao" class="com.szkingdom.dao.jdbc.impl.JdbcDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
?
DAO接口:
?
? ? ? ??public interface IJdbcDao {
? ? ?public Map<String, Object> queryForMap(String procName,?Map<String,Object>?mapParams);
?
? ? ?public List<Map<String, Object>> queryForList(String procName,?
Map<String, Object> mapParams);
? ? ?public Object queryForObject(String procName, Map<String, Object> mapParams, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Class<Object> sClass);
?
? ? ?public int update(String procName, Map<String, Object> mapParams);
?
? ? ?public int delete(String procName, Map<String, Object> mapParams);
?
? ? ?public int insert(String procName, Map<String, Object&g