Table des matières
Calculez le tableau {1,1,2,3,5,8.... ..} Le Valeur de la 30ème position
Configuration du fichier de mappage " > Configuration du fichier de mappage
javaType et ofType
Maison Java javaDidacticiel MyBatis s'auto-interroge et utilise la récursivité pour implémenter une liaison de niveau N

MyBatis s'auto-interroge et utilise la récursivité pour implémenter une liaison de niveau N

Jul 21, 2017 pm 02:38 PM
mybatis 实现 递归

A : Regardons d'abord une question d'entretien simple

Séquence de Fibonacci

Calculez le tableau {1,1,2,3,5,8.... ..} Le Valeur de la 30ème position


Règle : 1 1 À partir du troisième élément, chaque élément est la somme des deux éléments précédents

Il existe deux manières de le mettre en œuvre

La première façon :

   TestSelf((n<0   IllegalArgumentException("n不能为负数" (n<=2 1 TestSelf(n-2)+TestSelf(n-1 30
Copier après la connexion

La deuxième façon : utiliser des tableaux

 public int TestSelfTwo(int n){       if(n<0){           throw  new IllegalArgumentException("n不能为负数");
       }else if(n<=1){    //递归前两个数  不管n是多少 为一           return 1;
       }       int[]  nums = new int[n+1];   //30位从零开始   nums[0]=1;
       nums[1]=1;       for (int i  =2;i<n;i++){
           nums[i] = nums[i-2]+nums[i-1];
       }       return  nums[n-1];
   }
   @Test   public void  Test(){
       System.out.println(TestSelfTwo(30));
   }
Copier après la connexion

Formule : f(n) = f(n-2)+f(n-1) f représente le nombre de bits que la méthode n représente

B : Utilisez la récursivité pour implémenter le niveau n dans MyBatis Linkage

instruction SQL : sélectionnez * à partir du type où pid = 0 ; Spécifiez la valeur pid sur 0 pour la première fois, puis spécifiez la valeur pid sur 0 ; la prochaine fois Comme pid pour la prochaine requête

        public List<Category> getCategory(Integer pid);   //接口层方法
Copier après la connexion

Configuration du fichier de mappage

<mapper namespace="dao.CateGoryDao"><resultMap id="getSelf" type="entity.Category"><id column="cid" property="cid"></id><result column="cname" property="cName"></result><collection property="categorySet" select="getCategory" column="cid"></collection>   //这里可以不用指定oftype  使用反向查询select从另一个maper文件中取出数据时必须用ofType<!--查到的cid作为下次的pid--></resultMap><select id="getCategory" resultMap="getSelf" >select * from category where pid=#{pid}</select></mapper>
Copier après la connexion

javaType et ofType

de mybatis spécifient tous deux le type d'objet. La différence est qu'il doit être utilisé lors de l'utilisation de la sélection de requête inversée pour récupérer des données. un autre fichier maper. ofType

peut spécifier le type d'objet pour la collection et l'association

n'a pas besoin d'être écrit. OfType n'est requis que pour la sélection inversée ; :

package entity;import java.util.HashSet;import java.util.Set;/**
 * Created by zhangyu on 2017/7/12. */public class Category {private Integer  cid;private String cName;private Integer pid;private Set<Category> categorySet = new HashSet<Category>();
    @Overridepublic String toString() {return "Category{" +
                "cid=" + cid +
                ", cName='" + cName + '\'' +
                ", pid=" + pid +
                ", categorySet=" + categorySet +
                '}';
    }public Integer getCid() {return cid;
    }public void setCid(Integer cid) {this.cid = cid;
    }public String getcName() {return cName;
    }public void setcName(String cName) {this.cName = cName;
    }public Integer getPid() {return pid;
    }public void setPid(Integer pid) {this.pid = pid;
    }public Set<Category> getCategorySet() {return categorySet;
    }public void setCategorySet(Set<Category> categorySet) {this.categorySet = categorySet;
    }
}
Copier après la connexion

Classe de test :

 //测试自连接    @Testpublic void  TestSelf(){
        CateGoryDao dao = MyBatis.getSessionTwo().getMapper(CateGoryDao.class);
        List<Category> list = dao.getCategory(0);for (Category item:list ) {
            System.out.println(item);
        }
    }
Copier après la connexion

Imprimer les résultats :

Category{cid=1, cName='图书', pid=0, categorySet=[Category{cid=5, cName='期刊报纸', pid=1, categorySet=[]}, Category{cid=3, cName='青年图书', pid=1, categorySet=[Category{cid=6, cName='读者', pid=3, categorySet=[Category{cid=7, cName='12月份', pid=6, categorySet=[]}]}]}, Category{cid=4, cName='少儿图书', pid=1, categorySet=[]}]}
Category{cid=2, cName='服装', pid=0, categorySet=[]}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Implémentation récursive des fonctions C++ : existe-t-il une limite à la profondeur de récursion ? Implémentation récursive des fonctions C++ : existe-t-il une limite à la profondeur de récursion ? Apr 23, 2024 am 09:30 AM

La profondeur de récursion des fonctions C++ est limitée et le dépassement de cette limite entraînera une erreur de débordement de pile. La valeur limite varie selon les systèmes et les compilateurs, mais se situe généralement entre 1 000 et 10 000. Les solutions incluent : 1. Optimisation de la récursion de queue ; 2. Appel de queue ; 3. Implémentation itérative ;

Les expressions lambda C++ prennent-elles en charge la récursivité ? Les expressions lambda C++ prennent-elles en charge la récursivité ? Apr 17, 2024 pm 09:06 PM

Oui, les expressions C++ Lambda peuvent prendre en charge la récursivité à l'aide de std::function : utilisez std::function pour capturer une référence à une expression Lambda. Avec une référence capturée, une expression Lambda peut s'appeler de manière récursive.

Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Mar 24, 2024 am 11:27 AM

Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Avec l’essor des réseaux sociaux, WeChat est devenu l’un des outils de communication indispensables dans la vie quotidienne des gens. Cependant, de nombreuses personnes peuvent rencontrer un problème : se connecter à plusieurs comptes WeChat en même temps sur le même téléphone mobile. Pour les utilisateurs de téléphones mobiles Huawei, il n'est pas difficile d'obtenir une double connexion WeChat. Cet article explique comment obtenir une double connexion WeChat sur les téléphones mobiles Huawei. Tout d'abord, le système EMUI fourni avec les téléphones mobiles Huawei offre une fonction très pratique : l'ouverture d'une double application. Grâce à la fonction de double ouverture de l'application, les utilisateurs peuvent simultanément

Guide de programmation PHP : méthodes pour implémenter la séquence de Fibonacci Guide de programmation PHP : méthodes pour implémenter la séquence de Fibonacci Mar 20, 2024 pm 04:54 PM

Le langage de programmation PHP est un outil puissant pour le développement Web, capable de prendre en charge une variété de logiques et d'algorithmes de programmation différents. Parmi eux, l’implémentation de la séquence de Fibonacci est un problème de programmation courant et classique. Dans cet article, nous présenterons comment utiliser le langage de programmation PHP pour implémenter la séquence de Fibonacci et joindrons des exemples de code spécifiques. La suite de Fibonacci est une suite mathématique définie comme suit : le premier et le deuxième élément de la suite valent 1, et à partir du troisième élément, la valeur de chaque élément est égale à la somme des deux éléments précédents. Les premiers éléments de la séquence

Implémentation récursive de fonctions C++ : Analyse comparative des algorithmes récursifs et non récursifs ? Implémentation récursive de fonctions C++ : Analyse comparative des algorithmes récursifs et non récursifs ? Apr 22, 2024 pm 03:18 PM

L'algorithme récursif résout des problèmes structurés grâce à l'auto-appel de fonctions. L'avantage est qu'il est simple et facile à comprendre, mais l'inconvénient est qu'il est moins efficace et peut provoquer un débordement de pile. L'algorithme non récursif évite la récursion en gérant explicitement le. structure de données de pile. L'avantage est qu'il est plus efficace et évite le débordement de pile, l'inconvénient est que le code peut être plus complexe. Le choix du récursif ou du non récursif dépend du problème et des contraintes spécifiques de la mise en œuvre.

Comment implémenter la fonction de clonage WeChat sur les téléphones mobiles Huawei Comment implémenter la fonction de clonage WeChat sur les téléphones mobiles Huawei Mar 24, 2024 pm 06:03 PM

Comment mettre en œuvre la fonction de clonage WeChat sur les téléphones mobiles Huawei Avec la popularité des logiciels sociaux et l'importance croissante accordée à la confidentialité et à la sécurité, la fonction de clonage WeChat est progressivement devenue le centre d'attention. La fonction de clonage WeChat peut aider les utilisateurs à se connecter simultanément à plusieurs comptes WeChat sur le même téléphone mobile, ce qui facilite la gestion et l'utilisation. Il n'est pas difficile de mettre en œuvre la fonction de clonage WeChat sur les téléphones mobiles Huawei. Il vous suffit de suivre les étapes suivantes. Étape 1 : Assurez-vous que la version du système de téléphonie mobile et la version de WeChat répondent aux exigences. Tout d'abord, assurez-vous que la version de votre système de téléphonie mobile Huawei a été mise à jour vers la dernière version, ainsi que l'application WeChat.

Explication détaillée de la récursivité des fonctions C++ : application de la récursivité dans le traitement des chaînes Explication détaillée de la récursivité des fonctions C++ : application de la récursivité dans le traitement des chaînes Apr 30, 2024 am 10:30 AM

Une fonction récursive est une technique qui s'appelle à plusieurs reprises pour résoudre un problème de traitement de chaînes. Cela nécessite une condition de terminaison pour empêcher une récursion infinie. La récursivité est largement utilisée dans des opérations telles que l'inversion de chaînes et la vérification du palindrome.

Découvrez comment Golang offre des possibilités de développement de jeux Découvrez comment Golang offre des possibilités de développement de jeux Mar 16, 2024 pm 12:57 PM

Dans le domaine actuel du développement logiciel, Golang (langage Go), en tant que langage de programmation efficace, concis et hautement simultané, est de plus en plus favorisé par les développeurs. Sa riche bibliothèque de normes et ses fonctionnalités de concurrence efficaces en font un choix de premier plan dans le domaine du développement de jeux. Cet article explorera comment utiliser Golang pour le développement de jeux et démontrera ses puissantes possibilités à travers des exemples de code spécifiques. 1. Avantages de Golang dans le développement de jeux. En tant que langage typé statiquement, Golang est utilisé dans la construction de systèmes de jeux à grande échelle.

See all articles