这是一个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);
}
}道就是这样的
public interface CreateTableDemandDao extends MyMapper<CreateTableDemand> {
}public interface DropTableDemandDao extends MyMapper<DropTableDemand> {
}这些服务中有许多重复的函数,但又控制着不同的类,如何简化它们呢
发布于 2021-04-15 11:42:37
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);
....试试这个!也许这是可行的
https://stackoverflow.com/questions/67101847
复制相似问题