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<T,ID extends Serializable> {
    int add(T model);

    int adds(List<T> modelList);

    int update(T model);

    int updates(List<T> modelList);

    T queryById(ID id);

    T queryModelByModel(T model);

    List<T> queryList(T model);

    PageImpl<T> 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<T,ID extends Serializable> implements BaseService<T,ID> {


    public abstract BaseMapper<T, ID> 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<T> 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<T> 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<T> queryList(T model) {
        return getMapper().queryList(model);
    }
    
    public PageImpl<T> queryListForPageModel(T model, Pageable pb) {
        // 查询所有数据count
        int totalElements = getMapper().queryCount(model);
        // 查询list分页数据
        List<T> 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<T,ID extends Serializable> {
    int add(T model);


    int adds(List<T> modelList);


    int update(T model);


    int updates(List<T> modelList);


    T queryById(ID id);


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


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


    List<T> 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<T> {


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


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


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


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




    /**
     * 获取内容
     */
    List<T> 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<T> implements Page<T> {


    @Expose
    private int number;


    @Expose
    private int size;


    @Expose
    private int totalElements;


    @Expose
    private int totalPages;


    @Expose
    private List<T> content;


    private transient Pageable pageable;


    public PageImpl(Pageable pageable, int totalElements, List<T> 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<T> 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;
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值