您好,登錄后才能下訂單哦!
mybatis分頁插件MicroPageInterceptor
源碼地址:
https://github.com/jeffreyning/mybatis-plus
MicroPageInterceptor特點
1, 支持mysql和oracle分頁
2, 不必在xml編寫統計count的sql
3, 使用RowBounds子類PageInfo作為分頁信息和記錄總數的載體,不必像其他分頁插件那樣要求輸入輸出參數必須繼承特殊父類。
4, 可在PageInfo中填寫自定義排序sql串,提高查詢性能和排序靈活性
spring中配置mybatis分頁插件MicroPageInterceptor
建議在sqlSessionFactory中配置,可以根據sqlSessionFactory是oracle還是mysql配置插件的dialect屬性
<!-- define the SqlSessionFactory --> <beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">
<propertyname="dataSource"ref="dynamic_xa_dataSource"/>
<propertyname="typeAliasesPackage"value="foo.model"/>
<propertyname="plugins">
<list>
<beanclass="com.nh.micro.mybatis.plugin.MicroPageInterceptor">
<propertyname="dialect"value="mysql"/>
</bean>
</list>
</property>
</bean>
Dao接口設置
接口中添加PageInfo參數,表示需要分頁處理
//分頁查詢,傳入PageInfo參數
public List queryInfoByCondition(Map paramMap,PageInfo pageInfo);
//不分頁,則不用傳PageInfo參數
public List queryInfoByCondition(Map paramMap);
PageInfo結構
PageInfo繼承RowBounds可以透傳到Mybatis內部,不影響正常的參數。
pageNo,頁數從1開始
pageRows,每頁條數
orderStr,自定義排序sql(非必填)
total,返回總記錄數(返回值)
public class PageInfo extends RowBounds {
public PageInfo(int pageNo,int pageRows) {
super(pageNo, pageRows);
}
public PageInfo(int offset,int limit, String orderStr) {
super(offset, limit);
this.orderStr=orderStr;
}
private Longtotal = 0l;
public Long getTotal() {
returntotal;
}
public void setTotal(Long total) {
this.total = total;
}
private StringorderStr = "";
public String getOrderStr() {
returnorderStr;
}
public void setOrderStr(String orderStr) {
this.orderStr = orderStr;
}
}
分頁或不分頁sql在xml中是一樣的不需要修改;sql不需要針對pageinfo做額外處理,比如手工添加limit或rownum;不需要分頁的則不傳PageInfo參數;不需要額外填寫count統計sql;
<selectid="queryInfoByCondition"parameterType="Map"resultType="java.util.Map">
select * from micro_test5 where condition=#{param}
</select>
Java調用Dao
PageInfo創建實例時需填寫pageNo(頁數從1開始)和pageRows(每頁條數)
如果xml中sql沒有orderby語句可以,在pageInfo中設置pageInfo.setOrderStr()
//創建分頁信息對象
PageInfo pageInfo=new PageInfo(1,10);//第1頁,每頁10條
//可以設置order串(非必須)
pageInfo.setOrderStr("id desc");
//調用dao并傳入pageInfo
List list=testRep.queryInfoById(paramMap,pageInfo);
System.out.println(list);
//使用pageInfo.getTotal()獲取總記錄數
System.out.println(pageInfo.getTotal());
注意:
1,自定義排序
如果xml中sql沒有寫死排序sql,則pageInfo可以設置排序字符串。好處是查詢記錄個數時不必排序,查詢記錄時自動拼上排序sql,提高查詢性能。也可以不修改xml中sql支持靈活排序。
2,總記錄數處理
不必編寫額外的查詢count的sql;記錄數會在插件中設置到pageInfo對象的total字段中帶回。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。