gpt4 book ai didi

java - 如何使用扩展父映射器的子映射器方法

转载 作者:行者123 更新时间:2023-11-30 10:12:27 27 4
gpt4 key购买 nike

我正在尝试通过灵活的大小写调用子映射器方法但是在这种情况下,我们不知道会调用哪个方法,即使它扩展了父映射器。 [spring boot框架与mybatis]

// ParentMapper
public interface ParentMapper
{
// List<Map<String, String> findAll();
}

// Child1Mapper
public interface Child1Mapper extends ParentMapper
{
List<Map<String, String> findAll();
}

// Child2Mapper
public interface Child2Mapper extends ParentMapper{
List<Map<String, String> findAll();
}



@Autowired
Child1Mapper child1Mapper;

@Autowired
Child2Mapper child2Mapper;

// some class file
public ParentMapper getMapper(String param){
switch(param){
case "case1" : child1Mapper;
case "case2" : child2Mapper;
... 10 more..
}
}



public class example{
public void somethid(){
// this logic is in some biz
ParentMapper mapper = getMapper("case1"); // <----`-` we do not know where `findAll method` located is in
mapper.findAll();
}
}

如何调用子映射器方法

最佳答案

如果您将 case1 传递给 getMapper(String param) 方法,它在代码中很清楚,它将返回 return new Child1Mapper() child1mapper 对象,所以如果你调用 findAll() 方法然后 child1mapperfindAll() 方法将被调用

如果你传递 case2 那么你将得到 child2mapper 对象 (就像 Parentmapper p = new Child2Mapper()) 所以如果你调用 findAll() 方法 (p.findAll()) child2mapper findAll() 方法将被调用

child1mapperchild2mapper 都是parentmapper 的子类,但是child1mapperchild2mapper 所以不存在方法冲突的概念

关于java - 如何使用扩展父映射器的子映射器方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51887519/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com