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

巴扎黑
Libérer: 2017-07-21 14:38:59
original
2042 Les gens l'ont consulté

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal