JDBCTemplate
JDBCTemplate简介
@(Spring)
- 为了使JDBC更加易于使用,Spring在JDBC API上定义了一个抽象层,以此建立一个JDBC存取框架
- 作为Spring JDBC框架的核心,JDBC模板的设计目的是为不同类型的JDBC操作提供模板方法。每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务。通过这种方式,可以在尽可能保留灵活性的情况下,将数据库的存取工作降到最低。
- 不支持级联属性,它只是一个JDBC工具,不是ORM框架
- 是线程安全的,可以在IOC容器中声明它的单个实例,并将这个实例注入到所有DAO实例中
- 提供了一个JDBCDaoSupport类来简化DAO实现,该类声明了jdbcTemplate属性,它可以从IOC容器中注入,或者自动从数据源中创建
配置Spring的JdbcTemplate
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="数据源beanId">
</bean>
使用JDBCTemplate更新数据库
- 单条数据更新:
public int update(String sql, Object... args) throws DataAccessException
- 批量更新
public int batchUpdate(String sql, List<Object[]> batchArgs) throws DataAccessException
使用JDBCTemplate查询数据库
- 查询多行数据
public <T> <T>queryForObject(java.lang.String sql, java.lang.Class<T> requiredType, java.lang.Object... args)
- 查询单条数据
public <T> List<T> query(java.lang.String sql, RowMapper<T> rowMapper, java.lang.Object... args)
其中RowMapper指定如何去映射结果的行,常用的实现类为BeanPropertyRowMapper
使用NamedParameterJdbcTemplate
在JDBC模板中使用具名参数
- 在JDBC用法中,SQL参数使用占位符?表示,并且受到位置的限制,定位参数的问题在于,一旦参数的顺序发生变化,就必须改变参数绑定
- 在SpringJDBC框架中,绑定SQL参数的另一种选择是使用具名参数(namedparameter)
- 具名参数:SQL按名称(以冒号开头)而不是按位置进行指定。具名参数更易于维护,也提升了可读性。具名参数由框架类在运行时用占位符取代
- 具名参数只在NamedParameterJdbcTemplate中得到支持
配置如下:
<bean id="namedParameterJdbcTemplate"
class="org.springframework.jdbc.core.namedparam.NamaedParameterJdbcTemplate">
<constructor-arg ref="数据源beanId"></constructor-arg>
</bean>
没有无参构造器