日期:2014-05-16  浏览次数:20529 次

利用NamedParameterJdbcTemplate类封装接口访问数据库存储过程

描述:在近期的项目中遇到了一个问题,调用存储过程时,本来想使用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