SSM之Service层抽取成BaseService和BaseServiceImpl与mapper层抽取 BaseMapper

1、BaseService


package dataSource;


import data.page.PageImpl;
import data.page.Pageable;


import java.io.Serializable;
import java.util.List;


/**
 * @author henry
 * @version V1.0
 * @Title: BaseService
 * @Package com.txy.dataSource
 * @Description: 公用service接口
 */
public interface BaseService {
    int add(T model);

    int adds(List modelList);

    int update(T model);

    int updates(List modelList);

    T queryById(ID id);

    T queryModelByModel(T model);

    List queryList(T model);

    PageImpl queryListForPageModel(T model, Pageable pb);

    int queryCount(T model);
}




2、BaseServiceImpl


package dataSource.impl;


import data.page.PageImpl;
import data.page.Pageable;
import dataSource.BaseMapper;
import dataSource.BaseService;

import java.io.Serializable;
import java.util.List;


/**
 * @author henry
 * @version V1.0
 * @Title: BaseServiceImpl
 * @Package dataSource.impl
 * @Description: 公用service抽象实现类
 */
public abstract class BaseServiceImpl implements BaseService {


    public abstract BaseMapper getMapper();

    public int add(T model) {
        int i = 0;
        try{
            i = getMapper().add(model);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        return i;
    }
    
    public int adds(List modelList) {
        int i = 0;
        try{
            i = getMapper().adds(modelList);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        return i;
    }
    
    public int update(T model) {
        int i = 0;
        try{
            i = getMapper().update(model);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        return i;
    }
    
    public int updates(List modelList) {
        int i = 0;
        try{
            i = getMapper().updates(modelList);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        return i;
    }
    
    public T queryById(ID id) {
        return getMapper().queryById(id);
    }

    public T queryModelByModel(T model){
        return getMapper().queryModelByModel(model);
    }

    public List queryList(T model) {
        return getMapper().queryList(model);
    }
    
    public PageImpl queryListForPageModel(T model, Pageable pb) {
        // 查询所有数据count
        int totalElements = getMapper().queryCount(model);
        // 查询list分页数据
        List list = getMapper().queryListForPageModel(model, pb);
        return new PageImpl(pb,totalElements,list);
    }
    
    public int queryCount(T model) {
        return getMapper().queryCount(model);
    }
}




3、BaseMapper


package dataSource;


import data.page.Pageable;
import org.apache.ibatis.annotations.Param;


import java.io.Serializable;
import java.util.List;


/**
 * @author henry
 * @version V1.0
 * @Title: BaseMapper
 * @Package com.txy.dataSource
 * @Description: 公用mapper接口
 */
public interface BaseMapper {
    int add(T model);


    int adds(List modelList);


    int update(T model);


    int updates(List modelList);


    T queryById(ID id);


    T queryModelByModel(@Param("model") T model);


    List queryList(@Param("model") T model);


    List queryListForPageModel(@Param("model") T model, @Param("page") Pageable pb);


    int queryCount(@Param("model") T model);
}




本代码段中使用分页类代码
1、Page


package data.page;


import java.util.List;


/**
 * @author henry
 * @version V1.0
 * @Title: Page
 * @Package data.page
 * @Description: 页内容。
 */
public interface Page {


    /**
     * 当前页码
     */
    int getNumber();


    /**
     * 页大小
     */
    int getSize();


    /**
     * 总页数
     */
    int getTotalPages();


    /**
     * 总记录条数
     */
    int getTotalElements();




    /**
     * 获取内容
     */
    List getContent();


    /**
     * 是否有内容
     */
    boolean hasContent();


    /**
     * 下一页
     */
    Pageable nextPageable();


    /**
     * 前一页
     */
    Pageable previousPageable();


    boolean isLastPageNumber();


}


2、Pageable


package data.page;


/**
 * @author henry
 * @version V1.0
 * @Title: Pageable
 * @Package data.page
 */
public class Pageable {


    private int pageNumber;
    private int pageSize;


    private int index;
    private int length;


    public Pageable(int pageNumber, int pageSize) {
        this.pageNumber = pageNumber;
        this.pageSize = pageSize;


        this.index = (pageNumber - 1) * pageSize;
        this.length = pageSize;
    }


    public int getPageNumber() {
        return pageNumber;
    }


    public int getPageSize() {
        return pageSize;
    }


    public int getLength() {
        return length;
    }


    public int getIndex() {
        return index;
    }


    public Pageable next() {
        return new Pageable(pageNumber + 1, pageSize);
    }


    public Pageable previousOrFirst() {
        if (pageNumber == 1) {
            return this;
        }
        return new Pageable(pageNumber - 1, pageSize);
    }


    public Pageable first() {
        return new Pageable(1, pageSize);
    }
}


3、PageImpl


package data.page;


import com.google.gson.annotations.Expose;


import java.util.List;


/**
 * @author henry
 * @version V1.0
 * @Package data.page
 * @Description: 分页实现。
 */
public class PageImpl implements Page {


    @Expose
    private int number;


    @Expose
    private int size;


    @Expose
    private int totalElements;


    @Expose
    private int totalPages;


    @Expose
    private List content;


    private transient Pageable pageable;


    public PageImpl(Pageable pageable, int totalElements, List content) {
        number = pageable == null ? -1 : pageable.getPageNumber();
        size = pageable == null ? -1 : pageable.getPageSize();
        this.totalElements = totalElements;
        this.totalPages = pageable == null ? 1 : (totalElements + size - 1) / size;
        this.content = content;
        this.pageable = pageable;
    }


    public int getNumber() {
        return number;
    }


    public int getSize() {
        return size;
    }


    public int getTotalPages() {
        return totalPages;
    }


    public int getTotalElements() {
        return totalElements;
    }


    public List getContent() {
        return content;
    }


    public boolean hasContent() {
        return content != null && content.size() > 0;
    }


    public Pageable nextPageable() {
        return pageable.next();
    }


    public Pageable previousPageable() {
        return pageable.previousOrFirst();
    }


    public boolean isLastPageNumber() {
        return pageable.getPageNumber()==totalElements/pageable.getPageSize()+1;
    }
}

你可能感兴趣的:(java)