Neste artigo, aprenderemos sobre o processo de uso e execução dos procedimentos armazenados de chamadas mybatis. Primeiro, criamos um procedimento armazenado simples
Delimiter $ crie procedimento mybatis.ges_user_count (em idade int, out user_count int) iniciar a count (*) de usuários onde usuários.age = idade em user_count; Fim $
O significado desse procedimento armazenado é realmente relativamente simples, que é para inserir a idade e executar a contagem selecionada (*) de usuários onde usuários.age = idade em user_count; É relativamente simples obter o número de pessoas com idade igual à idade para atribuir valor ao user_count.
Em seguida, é a chamada do procedimento armazenado. Execute o seguinte comando para concluir a chamada do procedimento armazenado.
Em seguida, vamos dar uma olhada em como os procedimentos armazenados são chamados usando Mybatis.
UsermApper.xml adiciona configuração de chamada de procedimento armazenado:
<select id = "count" Declarattype = "Callable" parameterMap = "getUserCountMap"> ligue para mybatis.ges_user_count (?,?) </leclect>
Função principal:
public class Learn1Main {public static void main (string [] args) {// mybatis Configuration file string Resource = "Learn/mybatis-config.xml"; // Use o carregador de classe para carregar o arquivo de configuração do mybatis (ele também carrega o arquivo de mapeamento associado) inputStream IS = Learn1Main.class.getclassloader (). GetResourceasStream (Resource); // Construa a fábrica de sqlSessionsionSessionFactory SessionFactory = new SQLSessionFactoryBuilder (). Build (IS); SQLSession Session = SessionFactory.opensssion (); Mapa <string, inteiro> parametermap = new hashmap <string, inteiro> (); ParameterMap.put ("Age", 12); parameterMap.put ("user_count", -1); session.SelectOne ("com.tianjunwei.learn.learn1.entity.user.count", parametermap); Inteiro resultado = parameterMap.get ("user_count"); System.out.println (resultado); }}Resultados em execução:
O processo final de execução está no festival de eixo. Ainda há uma diferença entre chamar SQL comum e procedimentos armazenados. A execução das instruções SQL usa o CallableStatement.
// // Handle Parâmetro de saída // // Ligue para o procedimento armazenado para retornar o resultado, coloque o valor do resultado no parâmetro @Override public void HOLSYOUTPUTPPARAMETERSETERS (CLABLABLESTATEM CS) lança sqLexception {final Object ParameterObject = ParameterHandler.GetParameToBject (); MetaObject final metaparam = configuration.newMetaObject (ParameterObject); LISTA FINAL <MARAMETERMAPPING> parameTerMAppings = boundsql.getParameTerMAppings (); /Loop para cada parâmetro para (int i = 0; i <parametermappings.size (); i ++) {final ParameterMapping parameterMapping = parametermappings.get (i); // julgue o padrão do parâmetro if (parameTerMapping.getMode () == parametermode.out || parameterMapping.getMode () == parametermode.inout) {if (resultSet.class.equals (parameTerMapping.getJavatype ()) {handleRefcursorOutpPARAMETER ((ResultJavatype ())) {handleRevation (signotputParameter (resultStatype ()) {handleRefcursorOutpParameter (resultSettype ()). metaparam); } else {final typeHandler <?> typeHandler = parameterMapping.getTypeHandler (); metaparam.setValue (parametermapping.getProperty (), typeHandler.getResult (cs, i + 1)); }}}} private void handlerefcursoroutputParameter (ResultSet Rs, parameterMapping ParameterMapping, metaObject metaparam) lança sqLexception {try {final string resultMapid = parameTerMapping.GetResultMapid (); final ResultMap ResultMap = Configuration.GetResultMap (ResultMapid); Final DefaultresultHandler ResultHandler = New DefaultresultHandler (ObjectFactory); final ResultSetWrapper RSW = novo ResultSetWrapper (RS, Configuração); HandlerowValues (RSW, ResultMap, ResultHandler, New Rowbounds (), NULL); metaparam.setValue (parameterMapping.getProperty (), resultHandler.getResultList ()); } finalmente {// Edição #228 (fechos de resultados) CloseResultSet (rs); }}O exposto acima é o procedimento armazenado e o processo de operação da análise de código -fonte Mybatis introduzida a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!