Dans cet article, nous découvrirons le processus d'utilisation et d'exécution des procédures stockées MyBatis. Tout d'abord, nous créons une procédure stockée simple
Delimiter $ Création de procédure mybatis.ges_user_count (dans l'âge int, out user_count int) commencez à sélectionner le nombre (*) dans les utilisateurs où les utilisateurs.age = âge dans user_count; Fin $
La signification de cette procédure stockée est en fait relativement simple, qui consiste à entrer l'âge, puis à exécuter le nombre de sélections (*) parmi les utilisateurs où les utilisateurs.age = âge dans user_count; Il est relativement simple d'obtenir le nombre de personnes atteintes d'âge égal à l'âge pour attribuer de la valeur à user_count.
Ensuite, l'appel de la procédure stockée. Exécutez la commande suivante pour terminer l'appel de la procédure stockée.
Ensuite, jetons un coup d'œil à la façon dont les procédures stockées sont appelées à l'aide de MyBatis.
userMapper.xml ajoute la configuration d'appel de procédure stockée:
<select id = "count" stateType = "callable" Paramettermap = "getuserCountMap"> Appelez MyBatis.ges_user_count (? ,?) </lect>
Fonction principale:
classe publique Learn1Main {public static void main (String [] args) {// MyBatis Configuration File String Resource = "Learn / MyBatis-Config.xml"; // Utilisez le chargeur de classe pour charger le fichier de configuration MyBatis (il charge également le fichier de mappage associé) InputStream est = Learn1Main.class.getClassOLODOller (). GetResourCeasStream (ressource); // construire l'usine de SQLSESISIONSESSESSEFACTORY SessionFactory = new SqlSessionFactoryBuilder (). Build (IS); SqlSession Session = SessionFactory.OpenSession (); Map <String, Integer> ParameTermap = new HashMap <String, Integer> (); ParameTermap.put ("Age", 12); Paramettermap.put ("user_count", -1); Session.Selectone ("com.tianjunwei.learn.learn1.entity.user.count", paramètre); Integer result = ParameTermap.get ("user_count"); System.out.println (résultat); }}Résultats en cours:
Le processus d'exécution final se situe dans le DefaulTResultSethandler. Il y a toujours une différence entre appeler SQL ordinaire et procédures stockées. L'exécution des instructions SQL utilise CallableStAttatement.
//! MetaObject final Metaparam = Configuration.NewMetaObject (ParameterObject); Final List <Amameterpapping> Paramettermappings = boundsql.getParameTermAppings (); / Loop pour chaque paramètre pour (int i = 0; i <paramètres de paramètres.size (); i ++) {paramètre final Paramètre paramètre = paramètres.get (i); // juge le modèle du paramètre if (ParameTapping.getMode () == ParameterMode.out || ParametApping.GetMode () == ParameterMode.inout) {if (resultSet.class.equals (ParameTapping.getJavatype ())) {handlerefcursoroutPatater ((résultat) cs.getObject (i + 1) Metaparam); } else {final TypeHandler <?> TypeHandler = ParameTermapping.getTypeHandler (); Metaparam.setValue (ParameTermapping.getProperty (), typeHandler.getResult (CS, I + 1)); }}}} private void handlerefcursorOutputParameter (resultSet rs, paramètre paramétriseur, metaObject metaparam) lève sqlexception {try {final string resultMapid = paramètre.getResultMapid (); final resultMap resultMap = configuration.getResultMap (resultemapid); Final DefaultreSulthandler Resulthandler = new DefaultreSulthandler (objectFactory); final resultSetWrapper RSW = new ResultSetWrapper (RS, configuration); HandlerrowValues (RSW, ResultMap, Resulthandler, New Rowbounds (), null); metaparam.setValue (ParameTermapping.getProperty (), resulthandler.getResultList ()); } Enfin {// Issue # 228 (Close ResultsSets) CloserReSultSet (RS); }}Ce qui précède est l'appel de procédure stocké et le processus de fonctionnement de l'analyse de code source MyBatis qui vous est présenté par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!