A : Regardons d'abord une question d'entretien simple
Séquence de Fibonacci
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); //接口层方法
<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>
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!