多平台统一管理软件接口,如何实现多平台统一管理软件接口
273
2023-04-28
MyBatis之自查询使用递归实现 N级联动效果(两种实现方式)
A:首先先看下一个简单的面试题
斐波那契数列
计算数组{1,1,2,3,5,8.......} 第30位值
规律:1 1 从第三项开始,每一项都是前两项之和
有两种实现方式
第一种方式:
public class TestOne {
public int TestSelf(int n){
if(n<0){
throw new IllegalArgumentException("n不能为负数");
}else if(n<=2){
return 1;
}else{
return TestSelf(n-2)+TestSelf(n-1);
}
}
@Test
public void Test(){
System.out.println(TestSelf(30));
}
}
打印结果832040
第二种方式:利用数组
public int TestSelfTwo(int n){
if(n<0){
throw new IllegalArgumentException("n不能为负数");
}else if(n<=1){ //递归前两个数 不管n是多少 为一
return 1;
}
int[] ALiqqmVAnums = new int[n+1]; //30位从零开始
nums[0]=1;
nums[1]=1;
for (int i =2;i nums[i] = nums[i-2]+nums[i-1]; } return nums[n-1]; } @Test public void Test(){ System.out.println(TestSelfTwo(30)); } 公式:f(n) = f(n-2)+f(n-1) f代表方法 n代表多少 位 B:在MyBatis中利用递归实现n级联动 sql语句:select * from type where pid = 0; 首次指定pid值为0,然后下次根据pid为0的cid 作为下次查询的pid public List 映射文件配置 select * from category where pid=#{pid} mybatis的javaType和ofType 都是指定对象的类型 不同的是当使用反向查询select从另一个maper文件中取出数据时必须用ofType 都可以为collection和association是指定对象的类型, 都不是必须写的, 只有反向select时需要ofType; 实体类: 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 @Override phttp://ublic 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 return categorySet; } public void setCategorySet(Set this.categorySet = categorySet; } } 测试类: //测试自连接 @Test public void TestSelf(){ CateGoryDao dao = MyBatis.getSessionTwo().getMapper(CateGoryDao.class); List 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=[]}]}]}, http://Category{cid=4, cName='少儿图书', pid=1, categorySet=[]}]} Category{cid=2, cName='服装', pid=0, categorySet=[]} 以上所述是给大家介绍的MyBatis之自查询使用递归实现 N级联动效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!
nums[i] = nums[i-2]+nums[i-1];
}
return nums[n-1];
}
@Test
public void Test(){
System.out.println(TestSelfTwo(30));
}
公式:f(n) = f(n-2)+f(n-1) f代表方法 n代表多少 位
B:在MyBatis中利用递归实现n级联动
sql语句:select * from type where pid = 0; 首次指定pid值为0,然后下次根据pid为0的cid 作为下次查询的pid
public List
映射文件配置
select * from category where pid=#{pid}
mybatis的javaType和ofType
都是指定对象的类型 不同的是当使用反向查询select从另一个maper文件中取出数据时必须用ofType
都可以为collection和association是指定对象的类型,
都不是必须写的, 只有反向select时需要ofType;
实体类:
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
@Override
phttp://ublic 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
return categorySet;
}
public void setCategorySet(Set
this.categorySet = categorySet;
}
}
测试类:
//测试自连接
@Test
public void TestSelf(){
CateGoryDao dao = MyBatis.getSessionTwo().getMapper(CateGoryDao.class);
List
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=[]}]}]}, http://Category{cid=4, cName='少儿图书', pid=1, categorySet=[]}]}
Category{cid=2, cName='服装', pid=0, categorySet=[]}
以上所述是给大家介绍的MyBatis之自查询使用递归实现 N级联动效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~