@SelectProvider在写公用方法时由为好用。
举个例子:要统计每个表中的数据,就可以通过@SelectProvider来实现。
实现如下:
@Component
public interface CountDao {
@SelectProvider(value = CountDaoProvider.class, method = "getCount")
String getCount(String tableName);
}
public class CountDaoProvider {
// 方法需要是公开(底层使用的动态代理)的否则会抛异常,并且不要重载方法避免出现奇怪问题
public String getCount(String tableName) {
return new SQL(){
{
SELECT("count(1)");
FROM(tableName);
}
}.toString();
}
}
使用CountDao只需要正常@Autowired注入即可。
之后只需要传入表名即可查询出了。