pacote com.rxtc.bi.app.crm.rep.dao.impl;
importar java.sql.CallableStatement;
importar java.sql.Connection;
importar java.sql.ResultSet;
importar java.sql.SQLException;
importar javax.sql.DataSource;
importar org.springframework.orm.hibernate3.SessionFactoryUtils;
importar org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
*
* <pré>
*Título: Usando procedimentos armazenados em hibernação
* Basta ignorar o hibernate e chamar a API jdbc. Claro, a transação ainda é gerenciada pelo hibernate:
Suponha que criemos o seguinte procedimento armazenado:
crie ou substitua o procedimento batchUpdateCustomer(p_age in number) como
começar
atualizar CLIENTES definir IDADE=IDADE+1 onde IDADE> p_idade;
fim;
Existe um parâmetro p_age no procedimento armazenado, que representa a idade do cliente. A aplicação pode chamar o procedimento armazenado da seguinte maneira:
* Descrição: Descrição das funções do programa
* </pré>
* @autor lichunmei [email protected]
*@versão 1.00.00
* <pré>
* Modificar registros
* Versão modificada: Modificador: Data da modificação: Conteúdo da modificação:
* </pré>
*/
classe pública Texto estende HibernateDaoSupport {
procedimento de vazio público(){
tentar {
DataSource ds= SessionFactoryUtils.getDataSource(getSessionFactory());
Conexão conn=ds.getConnection();
String sql = "{call batchUpdateCustomer(?)}";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.setInt(1, 0);//Define o parâmetro idade como 0;
cstmt.executeUpdate();
//ResultSet rs = cstmt.executeQuery(sql);
conn.commit();
//rs.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Este artigo vem do blog CSDN. Por favor, indique a fonte ao reimprimir: http://blog.csdn.net/xixi_666/archive/2009/12/18/5029768.aspx.
-