1. 程式人生 > >二十、基於SSM框架,BaseService --- service層的抽取

二十、基於SSM框架,BaseService --- service層的抽取

service層的抽取和dao層的抽取差不多相同,主要不同點是dao例項化的問題,需要在呼叫時傳入,並在BaseServiceImpl接收。
詳細的過程說明請參考dao層的抽取。
dao層的抽取:http://blog.csdn.net/u011997561/article/details/79109293

1.抽取前的 UserService 介面

package com.storm.user.service;

import com.github.pagehelper.PageInfo;
import com.storm.base.service.IBaseService;
import com
.storm.user.entity.User; import java.io.Serializable; import java.util.List; public interface UserService{ int insert(User user);//增加 int delete(Serializable id);//刪除 int update(User user);//修改 User findById(Serializable id);//查詢 }

2.抽取前 UserServiceImpl 實現類

package com.storm.user.service;

/**
 * 使用者業務處理類
 *
 * @author
zzz * @date 2018-01-19 */
@Service("userService") public class UserServiceImpl implements UserService{ @Autowired private UserDao userDao; public int insert(User user){ return userDao.insert(user); } public int delete(Serializable id){ return userDao.delete(id); } public
int update(User user){ return userDao.update(user); } public User findById(Serializable id){ return userDao.findById(id); } }

3.建立 BaseService 介面

package com.storm.base.service;

/**
 * service 基類
 * @param <E> 實體物件型別
 *
 * @author zzz
 * @date 2018-01-19
 */
public interface IBaseService<E,PK extends Serializable> {

    int insert(E entity);//增加

    int delete(Serializable id);//刪除

    int update(E entity);//修改

    User findById(Serializable id);//查詢
}

4.建立 BaseService實現類

package com.storm.base.service;

/**
 * service 基類
 *
 * @param <E>  實體物件
 * @param <PK> 主鍵型別
 *
 * @author zzz
 * @date 2018-01-19
 */
public abstract class BaseServiceImpl<E, PK extends Serializable> implements IBaseService<E, PK> {

    /**
     * 獲取 dao 物件
     * @return
     */
    protected abstract BaseDao<E, PK> getDao();

    public int insert(E entity);//增加

    public int delete(Serializable id);//刪除

    public int update(E entity);//修改

    public E findById(Serializable id);//查詢

}

5.UserService 繼承 BaseService

package com.storm.user.service;

public interface UserService extends IBaseService<User,Long>{

    //去掉原來的程式碼

    void dealUserData(User user);

}

6.UserServiceImpl 繼承 BaseServiceImpl

package com.storm.user.service;

/**
 * 使用者業務處理類
 *
 * @author zzz
 * @date 2018-01-19
 */
@Service("userService")
public class UserServiceImpl extends BaseServiceImpl<User,Long> implements UserService{

    @Autowired
    private UserDao dao;

    protected UserDao getDao() {
        return dao;
    }

    //可以新增其他的業務處理方法,通用的CRUD方法可以直接呼叫 BaseService 中的方法

    public void dealUserData(User user){

    }

}

<完>