如何扩展BaseMapper中的方法
public interface MyBaseMapper<T> extends BaseMapper<T> {
public List<T> findAll();
// 扩展其他的一些方法
}
public class FindALL extends AbstractMethod {
@Override
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
String sql = "select * from "+ tableInfo.getTableName();
SqlSource sqlSource = languageDriver.createSqlSource(configuration,sql,modelClass);
return this.addSelectMappedStatement(mapperClass, "findAll", sqlSource, modelClass, tableInfo);
}
}
AbstractSqlInjector
会导致plus插件内置的BaseMapper中的方法不能使用DefaultSqlInjector
并且将父类中的方法集合添加进入到list中去就可以扩展自己写的方法public class MySqlInjector extends DefaultSqlInjector {
@Override
public List<AbstractMethod> getMethodList() {
List<AbstractMethod> list = new ArrayList<>();
// 获取父类中的集合
list.addAll(super.getMethodList());
// 再扩充自己的方法
list.add(new FindALL());
return list;
}
}
/**
* sql注入器
* @return
*/
@Bean
public MySqlInjector mySqlInjector(){
return new MySqlInjector();
}
@Test
public void testFindALl(){
List<User> users = this.userMapper.findAll();
users.forEach(user -> System.out.println(user));
}
Execute SQL:
select
*
from
tb_user