首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的代码中有很多重复的函数,如何简化它们

我的代码中有很多重复的函数,如何简化它们
EN

Stack Overflow用户
提问于 2021-04-15 11:25:02
回答 1查看 27关注 0票数 0

这是一个spring-boot项目,使用MVC结构

我有3种扩展到BaseDemand的需求类型

代码语言:javascript
复制
public class DropTableDemand extends BaseDemand{}
public class ExpandTableDemand extends BaseDemand{}
public class CreateTableDemand extends BaseDemand{}

我有3个服务来控制它们,并用mybatis-plus DAO保存它们

代码语言:javascript
复制
public class DropTableDemandService {

    @Autowired
    private DropTableDemandDao dropTableDemandDao;

    public List<DropTableDemand> queryByOrgIDs(List<String> orgIDs, Integer page, Integer rows) {
        if (page != null && rows != null) {
            PageHelper.startPage(page, rows);
        }
        Weekend<DropTableDemand> weekend = Weekend.of(DropTableDemand.class);
        WeekendCriteria<DropTableDemand, Object> criteria = weekend.weekendCriteria();
        criteria.andIn(DropTableDemand::getTableOrg, orgIDs);
        return dropTableDemandDao.selectByExample(weekend);
    }
}
代码语言:javascript
复制
public class ExpandTableDemandService {

    @Autowired
    private ExpandTableDemandDao expandTableDemandDao;

    public List<ExpandTableDemand> queryByOrgIDs(List<String> orgIDs, Integer page, Integer rows) {
        if (page != null && rows != null) {
            PageHelper.startPage(page, rows);
        }
        Weekend<ExpandTableDemand> weekend = Weekend.of(ExpandTableDemand.class);
        WeekendCriteria<ExpandTableDemand, Object> criteria = weekend.weekendCriteria();
        criteria.andIn(ExpandTableDemand::getTableOrg, orgIDs);
        return expandTableDemandDao.selectByExample(weekend);
    }
}
代码语言:javascript
复制
public class CreateTableDemandService {

    @Autowired
    private CreateTableDemandDao createTableDemandDao;

    public List<CreateTableDemand> queryByOrgIDs(List<String> orgIDs, Integer page, Integer rows) {
        if (page != null && rows != null) {
            PageHelper.startPage(page, rows);
        }
        Weekend<CreateTableDemand> weekend = Weekend.of(CreateTableDemand.class);
        WeekendCriteria<CreateTableDemand, Object> criteria = weekend.weekendCriteria();
        criteria.andIn(CreateTableDemand::getTableOrg, orgIDs);
        return createTableDemandDao.selectByExample(weekend);
    }
}

道就是这样的

代码语言:javascript
复制
public interface CreateTableDemandDao extends MyMapper<CreateTableDemand> {

}
代码语言:javascript
复制
public interface DropTableDemandDao extends MyMapper<DropTableDemand> {

}

这些服务中有许多重复的函数,但又控制着不同的类,如何简化它们呢

EN

回答 1

Stack Overflow用户

发布于 2021-04-15 11:42:37

代码语言:javascript
复制
public WeekendCriteria getCriteria(Class clazz) {
    Weekend<BaseDemand> weekend = Weekend.of(clazz);
    WeekendCriteria<BaseDemand, Object> criteria = weekend.weekendCriteria();
    return criteria;
}

....
getCriteria(CreateTableDemand.class).andIn(CreateTableDemand::getTableOrg, orgIDs);
....

试试这个!也许这是可行的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67101847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档