一:创建sql注入方法类,这个类需要继承AbstractMethod类,重写里面的injectMappedStatement方法。在这个方法中,完成四个步骤:
1.定义sql语句
2.定义方法名
3.构建sqlSource,它将负责将Sql传递到数据库
4.构建方法
例:
//自定义sql语句类
public class DeleteAll extends AbstractMethod {
@Override
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
//1.定义一个sql语句
String sql = "delete from "+tableInfo.getTableName();
//2.方法名
String method="deleteAll";
//3.构建SqlSource,它负责将Sql传递到数据库
SqlSource sqlSource = this.languageDriver.createSqlSource(this.configuration, sql, modelClass);
//4.构建删除方法
return this.addDeleteMappedStatement(mapperClass,method,sqlSource);
}
}
二:创建Sql自动注入器,继承AbstractSqlInjector
注入自定义方法的集合,可以注入很多个方法
例:
@Component
public class MySqlInject extends AbstractSqlInjector {
//注入自定义方法集合
@Override
public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
List<AbstractMethod> methods =new ArrayList<>();
methods.add(new DeleteAll());
return methods;
}
}
三:在mapper接口中定义这个方法
这个方法只能由mapper调用