二十、基於SSM框架,BaseService --- service層的抽取
阿新 • • 發佈:2019-01-14
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){
}
}
<完>