我的代码中有许多重复的功能如何简化它们
Posted
技术标签:
【中文标题】我的代码中有许多重复的功能如何简化它们【英文标题】:There are many repetitive functions in my codes how to simplify them 【发布时间】:2021-07-10 02:23:48 【问题描述】:这是一个spring-boot项目,使用MVC结构
我有 3 种类型的需求延伸到BaseDemand
public class DropTableDemand extends BaseDemand
public class ExpandTableDemand extends BaseDemand
public class CreateTableDemand extends BaseDemand
我有 3 个服务来控制它们并用mybatis-plus
DAO 保存它们
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);
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);
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);
DAO 就是这样的
public interface CreateTableDemandDao extends MyMapper<CreateTableDemand>
public interface DropTableDemandDao extends MyMapper<DropTableDemand>
这些服务中有很多重复的功能,但控制不同的类,如何简化它们
【问题讨论】:
【参考方案1】: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);
....
试试这个!也许这行得通
【讨论】:
以上是关于我的代码中有许多重复的功能如何简化它们的主要内容,如果未能解决你的问题,请参考以下文章
jenkins插件--Cobertura,JaCoCo,Emma-----