版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011997561/article/details/79109578
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){
}
}
<完>