實(shí)體類等不贅述。
1.新建一個(gè)BaseMapper文件,繼承幾種基礎(chǔ)mapper,可根據(jù)需求自行添加
public interface MyMapper<T>
extends BaseMapper<T>,
ConditionMapper<T>,
IdsMapper<T>,
ExampleMapper<T>,
InsertListMapper<T>,
MySqlMapper<T> {
}
2.新建一個(gè)BaseService,此處僅添加根據(jù)condition查找的方法,可自行添加其他需要使用的一些方法。
public interface MyBaseService<T> {
void deleteByCondition(T model, Condition condition);
List<T> findByCondition(Condition condition);
}
3.實(shí)現(xiàn)BaseService
public abstract class AbstractServiceImpl<T> implements MyService<T> {
@Autowired
protected MyMapper<T> mapper;
private Class<T> modelClass;
public AbstractServiceImpl() {
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
modelClass = (Class<T>) pt.getActualTypeArguments()[0];
}
public void deleteByCondition(T model, Condition condition) {
mapper.updateByConditionSelective(model,condition);
}
public List<T> findByCondition(Condition condition) {
return mapper.selectByCondition(condition);
}
}
4.在方法實(shí)現(xiàn)類下引用
接口定義
public interface StudentService extends MyBaseService<Student> {
void ifExists(String studentNo);
}
實(shí)現(xiàn)類
public class StudentServiceImpl extends AbstractServiceImpl<Student> implements StudentService {
@Override
public void ifExists(String studentNo) {
Condition condition = new Condition(實(shí)體.class);
condition.createCriteria().andEqualTo("id",studentNo).andEqualTo("isDeleted",0);
if(findByCondition(condition).size() != 0) {
throw new RuntimeException("學(xué)生存在!");
}
}
}