@provide
@provide主要分為四種:@InsertProvider、@DeleteProvider、@UpdateProvider和@SelectProvider,分別對應着sql中的增刪改查四種操作。
四種注解的使用方式相同,故以@SelectProvide為例進行介紹:
@SelectProvide注解主要作用在Mapper的interface文件上,寫法是
@SelectProvide(type="XXX.class", method="exampleMethod") @ResultMap("Enitity") public Enitity getSomething();
上面代碼中@SelectProvide的意思是:“getSomething接口使用的是XXX這個類中exampleMethod函數返回的sql語句”,其中的兩個參數,XXX.class代表指定的一個類,用戶自定義;exampleMethod代表這個類中的一個函數,用來返回sql語句,這個函數返回值必須是String類型函數,返回的就是一個sql字符串。@ResultMap注釋的意思是從sql的執行結果集中去數據,拼裝成Enitity的實體類。
一個參@SelectProvide
@SelectProvider(type = SqlProvider.class, method = "selectUser2") @ResultMap("userMap") public User getUser2(@Param("userId") long userId);
public String selectUser2(Map<String, Object> para) { return "select * from user where userId=" + para.get("userId"); }
多個參數@SelectProvide
@SelectProvider(type = SqlProvider.class, method = "selectUserCheck") @ResultMap("userMap") public User getUserCheck(@Param("userId") long userId, String password);
public String selectUserCheck(Map<String, Object> para) { return "select * from user where userId=" + para.get("userId") + " and password='" + para.get("1") + "'"; }