Spring 的JdbcTemplate的持久层封装

1,Spring 2.0提供了几种常用的持久层访问方式:

 

1,Jdbc,-----------JdbcTemplate;

2,hibernate ,-------hibernateTemplate;

3,JDO

4,Oracle TopLink;

5,iBATIS SQL Maps;

6,JPA;

 

 

2,jdbc封装的相关类:

 

   JdbcDaoSupport:

   对 JdbcTemplate的封装,通过getJdbcTemplate()的得到JdbcTemplate对象。有setDataSource方法,通过该方法 对JdbcTemplate初始化,createJdbcTemplate(dataSource)。

 

   通过xml配置id 为dataSource的bean。格式如下:

 


<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>

 

这是用数据源的dataSource的标准设置, hibernate的数据源也是这样配置。

 

在DAO的配置中,必须把dataSource作为reference注入进去。

 

JdbcAccessor :JdbcTemplate父类,实现了一些基本方法,比如:setLazyInit,isLazyInit,afterPropertiesSet,

setDatabaseProductName,setExceptionTranslator;

 

JdbcOperations:JdbcTemplate父接口,定义了一些的数据访问的操作。execute,query。

 

SqlProvider:sql语句提供接口。

 

DataSourceUtils:数据源管理接口,提供静态的方法,负责数据源的连接,

得到连接:   Connection getConnection(DataSource dataSource);

关闭连接:releaseConnection(Connection con, DataSource dataSource);

 

PreparedStatementCreator:PreparedStatement生成接口,只有一个方法需要实现:

PreparedStatement createPreparedStatement(Connection con);

 

PreparedStatementCallback:PreparedStatement操作接口,只有一个方法需要实现:

Object doInPreparedStatement(PreparedStatement ps) ;

 

CallableStatementCreator:CallableStatement生成接口,只有一个方法需要实现:

CallableStatement createCallableStatement(Connection con);

 

RowCallbackHandler:行操作接口,只有一个方法需要实现:

void processRow(ResultSet rs) ;

 

ConnectionCallback:连接操作接口;只有一个方法需要实现:

 

Object doInConnection(Connection con);

 

3,JdbcTemplate的异常处理:

 

getExceptionTranslator()得到异样翻译器SQLErrorCodeSQLExceptionTranslator。他的方法:

translate(String task, String sql, SQLException sqlEx)来翻译异常,错误代码在文件里:sql-error-codes.xml。

 

觉得JdbcTemplate的异常处理不是,很好,往往不能精确的定位异样,试需要手工配置新文件,还是需要程序处理,不是很明白。

 

4,NamedParameterJdbcTemplate:带参数的JdbcTemplate。类似如下:

 

private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
public void setDataSource(DataSource dataSource) {
this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}
public int countOfActorsByFirstName(String firstName) {
String sql = "select count(0) from T_ACTOR where first_name = :first_name";
Map namedParameters = Collections.singletonMap("first_name", firstName);
return this.namedParameterJdbcTemplate.queryForInt(sql, namedParameters);

}

 

5,SimpleJdbcTemplate:jdk5.0以上简洁风格的JdbcTemplate。

 

6,另外提供了操作jdbc的java 类:

 

SqlQuery:

 

MappingSqlQuery:

 

SqlUpdate:

 

StoredProcedure:

 

SqlFunction:

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值