


MyBatis s'auto-interroge et utilise la récursivité pour implémenter une liaison de niveau N
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
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)); }
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); //接口层方法
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>
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; } }
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); } }
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=[]}
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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 ;

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 ? 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

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

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 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.

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.

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.
