MyBatis的@SelectProvider

@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注入即可。
之后只需要传入表名即可查询出了。

你可能感兴趣的:(MyBatis的@SelectProvider)