mybatis分頁的一種解決方案


mybatis自定義分頁解決方案 

1、PageSqlProvider<T> —— 提供默認的分頁列表查詢

package com.xinyartech.erp.core.base; import com.xinyartech.erp.core.dto.page.PageDTO; /** * Provider默認抽象實現 * * @author Lynch */
public abstract class PageSqlProvider<T> { /** * 分頁sql語句,注意:最外層顯示字段不能包含子查詢 * * @return * @author Lynch */
    protected abstract String preSql(PageDTO<T> pageDto); /** * 分頁列表查詢 * * @param pageDto * @return * @author Lynch */
    public String findAll(PageDTO<T> pageDto){ return preSql(pageDto); } /** * 統計分頁總條數 * * @return * @author Lynch */
    public String countAll(PageDTO<T> pageDto){ String sql = preSql(pageDto); String countSql = "select count(1) " + sql.substring(sql.indexOf("from"), sql.length()); return countSql; } }

 

2、StudentMapper.java —— 繼承PageSqlProvider<T>,重新preSql(),自動實現分頁查詢和總條數查詢

package com.xinyartech.erp.system.mapper; import java.util.List; import org.apache.ibatis.annotations.SelectProvider; import com.xinyartech.erp.core.base.PageSqlProvider; import com.xinyartech.erp.core.dto.page.PageDTO; import com.xinyartech.erp.system.dto.RoleResourceDTO; import com.xinyartech.erp.system.model.SysButton; public interface StudentMapper { @SelectProvider(type = StudentProvider.class, method = "findAll") public List<SysButton> querySysButtonList(PageDTO<RoleResourceDTO> pageDto); @SelectProvider(type = StudentProvider.class, method = "countAll") public Long count(PageDTO<RoleResourceDTO> pageDto); class StudentProvider extends PageSqlProvider<RoleResourceDTO> { @Override protected String preSql(PageDTO<RoleResourceDTO> pageDto) { String sql = "select * from sys_button where 1=1"; if(pageDto.getParameters().getRoleId() != null) { sql +=" and id=" + pageDto.getParameters().getRoleId(); } return sql; } } }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM