二十、基于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  实体对象类型
 *
 * @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   实体对象
 * @param  主键类型
 *
 * @author zzz
 * @date 2018-01-19
 */
public abstract class BaseServiceImpl<E, PK extends Serializable> implements IBaseService<E, PK> {

    /**
     * 获取 dao 对象
     * @return
     */
    protected abstract BaseDao 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){

    }

}

<完>

你可能感兴趣的:(Java,BaseDao,BaseService)