使用Spring JDBC Framework简化开发

使用Spring JDBC Framework简化开发

纯JDBC操作, 对某些项目来说, 也许更好, Spring JDBC Framework让你不用关心Connection, Statement, ResultSet.

定义数据源
< bean  id ="dataSource"  class ="org.springframework.jndi.JndiObjectFactoryBean" >
    
< property  name ="jndiName" >
        
< value > java:/comp/env/jdbc/oracle </ value >
    
</ property >
</ bean >

定义事务管理器
< bean  id ="transactionManager"  class ="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
    
< property  name ="dataSource"  ref ="dataSource"   />
</ bean >

定义dao
< bean  id ="customerDAO"  class ="com.waterye.dao.impl.CustomerDAOImpl" >
    
< property  name ="dataSource"  ref ="dataSource"   />
    
< property  name ="transactionManager"  ref ="transactionManager"   />
</ bean >

demo
public   class  CustomerDaoImpl  extends  JdbcDaoSupport  implements  CustomerDAO {
    
private  DataSource dataSource; 
    pirvate TransactionManager transactionManager;

    
public   void  setDataSource(DataSource dataSource) {
        
this .dataSource  =  dataSource;
    }

    
public   void  setTransactionManager(DataSourceTransactionManager transactionManager) {
        
this .transactionManager  =  transactionManager;
    } 

    
public  Map get(Integer id)  throws  Exception {
        String querySql 
=   " select * from customer where id = ? " ;

        
return  getJdbcTemplate().queryForMap(querySql,  new  Object[] { id }); 
    }

    
public   void  insert( final  Map customer)  throws  Exception {
        String seqSql 
=   " select customer_seql.nextval from dual "
        String insertSql 
=   " insert into customer (id, code, name, status) values (?, ?, ?, ?) " ;
        
        TransactionTemplate transactionTemplate 
=   new  TransactionTemplate(transactionManager);
        transactionTemplate.execute(
new  TransactionCallbackWithoutResult() { 
            
protected   void  doInTransactionWithoutResult(TransactionStatus status) { 
                JdbcTemplate jdbcTemplate 
=  getJdbcTemplate();
                
int  id  =  jdbcTemplate.queryForInt(seqSql);
                Object[] params 
=   new  Object[] {  new  Integer(id), customer.get( " code " ), customer.get( " name " ), map.get( " status " ) };
                jdbcTemplate.update(insertSql, params);
            }
        }
    }

    
public   void  update( final  Map customer)  throws  Exception {
        
//   
    }

    
public   void  delete(Integer id)  throws  Exception {
        String deleteSql 
=   " delete from customer where id = ? " ;

        TransactionTemplate transactionTemplate 
=   new  TransactionTemplate(transactionManager);
        transactionTemplate.execute(
new  TransactionCallbackWithoutResult() { 
            
protected   void  doInTransactionWithoutResult(TransactionStatus status) { 
                getJdbcTemplate().update(deleteSql, 
new  Object[] { id });
            }
        }
    }

    
public  List findValidCustomers()  throws  Exception {
        String querySql 
=   " select * from customer where status = 'valid' order by code " ;

        
return  getJdbcTemplate().query(querySql,  new  OracleColumnMapRowMapper()); 
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值