mybatis paged a solution

mybatis custom paging solutions 

1, PageSqlProvider <T> - provides a default paging list query

Package com.xinyartech.erp.core.base; 

Import com.xinyartech.erp.core.dto.page.PageDTO; 

/ **    
 * abstract implementation Provider Default 
 * 
 * @author Lynch, 
  * / 
public  abstract  class PageSqlProvider <T> {
     / ** 
     * paging sql statement, pay attention: the outermost layer of the display field can not contain subqueries 
     * 
     * @return 
     * @author Lynch
      * / 
    protected  abstract String preSql (pageDTO <T> pageDto); 
    
    / ** 
     * page list query 
     * 
     * @ 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 - inherited PageSqlProvider <T>, re preSql (), automatically paging query and the total number of queries

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;
        }
 
    }
}

 

 

Guess you like

Origin www.cnblogs.com/linjiqin/p/11429538.html