整合SpringMVC框架+Mybatis框架開發人力資源管理系統(七)
阿新 • • 發佈:2019-01-08
實現業務邏輯介面HrmService
業務邏輯介面HrmService中定義了系統功能實現所需要呼叫的方法,HrmServiceImpl類實現了該介面,對每個方法的方法體進行了具體實現:
package org.fkit.hrm.impl; import java.util.HashMap; import java.util.List; import java.util.Map; import org.fkit.hrm.dao.DeptDao; import org.fkit.hrm.dao.DocumentDao; import org.fkit.hrm.dao.EmployeeDao; import org.fkit.hrm.dao.JobDao; import org.fkit.hrm.dao.NoticeDao; import org.fkit.hrm.dao.UserDao; import org.fkit.hrm.domain.Dept; import org.fkit.hrm.domain.Document; import org.fkit.hrm.domain.Employee; import org.fkit.hrm.domain.Job; import org.fkit.hrm.domain.Notice; import org.fkit.hrm.domain.User; import org.fkit.hrm.service.HrmService; import org.fkit.hrm.util.tag.PageModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; /** * 人事管理系統服務層介面實現類 * @author luliangchang * */ @Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT) @Service("hrmService") public class HrmServiceImpl implements HrmService { /* * 自動注入持久層dao物件 */ @Autowired private UserDao userDao; @Autowired private DeptDao deptDao; @Autowired private DocumentDao documentDao; @Autowired private EmployeeDao employeeDao; @Autowired private JobDao jobDao; @Autowired private NoticeDao noticeDao; /*******************使用者服務層介面實現************/ //實現HrmService介面的login方法 @Transactional(readOnly=true) @Override public User login(String loginName,String password){ System.out.println("呼叫HrmServiceImpl類方法login -->"); System.out.println(loginName); System.out.println(password); return userDao.selectUserByLoginnameAndPassword(loginName, password); } //實現HrmService介面的selectUserById方法 @Transactional(readOnly=true) @Override public User selectUserById(Integer id){ return userDao.selectUserById(id); } //實現HrmService介面的selectUser方法 @Transactional(readOnly=true) public List<User> selectUser(User user,PageModel pageModel){ Map<String,Object> params=new HashMap<String,Object>(); params.put("user", user); int recordCount=userDao.count(params); System.out.println("呼叫HrmServiceImpl類方法selecctAllUser -->"); System.out.println(pageModel.getPageIndex()); System.out.println(pageModel.firstLimitParam); //設定記錄總數,從而可以計算出totalSize,繼而計算出實際的pageIndex pageModel.setRecordCount(recordCount); //更新pageIndex pageModel.updatePageIndex(); //更新記錄查詢位置 pageModel.setFirstLimitParam(); if(recordCount>0){ /**開始分頁查詢資料:查詢第幾頁的資料**/ params.put("pageModel", pageModel); } List<User> users=userDao.selectByPage(params); return users; } //實現HrmService介面的deleteUser方法 @Transactional(readOnly=true) @Override public void deleteUser(Integer id){ userDao.deleteById(id); } //實現HrmService介面的insertUser方法 @Transactional(readOnly=true) @Override public void insertUser(User user){ userDao.save(user); } //實現HrmService介面的updateUser方法 @Transactional(readOnly=true) @Override public void updateUser(User user){ userDao.update(user); } //實現HrmService介面的selectUserByUserName方法 @Transactional(readOnly=true) @Override public User selectUserByUserName(String userName){ User user=userDao.selectUserByUserName(userName); return user; } /*******部門服務層介面實現******/ //實現HrmService介面的selectById方法 @Transactional(readOnly=true) @Override public Dept selectDeptById(Integer id){ return deptDao.selectById(id); } //實現HrmService介面的selectAll方法 @Transactional(readOnly=true) @Override public List<Dept> selectDept(Dept dept,PageModel pageModel){ //當前需要分頁的總記錄數 Map<String,Object> params=new HashMap<String,Object>(); params.put("dept", dept); int recordCount=deptDao.count(params); System.out.println("呼叫HrmServiceImpl方法selectAll-->"); //設定記錄總數,從而可以計算出totalSize,繼而計算出實際的pageIndex pageModel.setRecordCount(recordCount); //更新pageIndex pageModel.updatePageIndex(); //更新記錄查詢位置 pageModel.setFirstLimitParam(); if(recordCount>0){ /**開始分頁查詢資料,查詢第幾頁資料**/ params.put("pageModel", pageModel); } List<Dept> depts=deptDao.selectByPage(params); return depts; } //實現HrmService介面的deleteDept方法 @Transactional(readOnly=true) @Override public void deleteDept(Integer id){ deptDao.deleteById(id); } //實現HrmService介面的insertDept方法 @Transactional(readOnly=true) @Override public void insertDept(Dept dept){ deptDao.save(dept); } //實現HrmService介面的updateDept方法 @Transactional(readOnly=true) public void updateDept(Dept dept){ deptDao.update(dept); } //實現HrmService介面的selectDeptByDeptName方法 @Transactional(readOnly=true) public Dept selectDeptByDeptName(String deptName){ Dept dept=deptDao.selectDeptByDeptName(deptName); return dept; } /*******員工服務層介面實現******/ //實現HrmService介面的selectEmployee方法 @Transactional(readOnly=true) @Override public List<Employee> selectEmployee(Employee employee,PageModel pageModel){ /**當前需要分頁的總資料條數**/ Map<String,Object> params=new HashMap<String,Object>(); params.put("employee", employee); int recordCount=employeeDao.count(params); System.out.println("呼叫HrmServieImpl方法selectEmployee-->"); pageModel.setRecordCount(recordCount); pageModel.updatePageIndex(); pageModel.setFirstLimitParam(); if(recordCount>0){ params.put("pageModel",pageModel); } List<Employee> employees=employeeDao.selectByPage(params); return employees; } //實現HrmService介面的selectEmployeeById方法 @Transactional(readOnly=true) @Override public Employee selectEmployeeById(Integer id){ return employeeDao.selectById(id); } //實現HrmService介面的insetEmployee方法 @Transactional(readOnly=true) @Override public void insertEmployee(Employee employee){ employeeDao.insertEmployee(employee); } //實現HrmService介面的updateEmployee方法 @Transactional(readOnly=true) public void updateEmployee(Employee employee){ employeeDao.updateEmployee(employee); } //實現HrmService介面的deleteEmployee方法 @Transactional(readOnly=true) @Override public void deleteEmployee(Integer id){ employeeDao.deleteById(id); } /******職位服務層介面實現******/ //實現HrmService介面的selectAllJob方法 @Transactional(readOnly=true) @Override public List<Job> selectAllJob(){ return jobDao.selectAllJob(); } //實現HrmService介面的selectJob方法 @Transactional(readOnly=true) @Override public List<Job> selectJob(Job job,PageModel pageModel){ Map<String,Object> params=new HashMap<String,Object>(); params.put("job",job); int recordCount=jobDao.count(params); System.out.println("呼叫HrmServiceImpl類方法selectJob-->"); //設定記錄總數,從而可以計算出totalSize,繼而計算出實際的pageIndex pageModel.setRecordCount(recordCount); //更新pageIndex pageModel.updatePageIndex(); //更新記錄查詢位置 pageModel.setFirstLimitParam(); if(recordCount>0){ params.put("pageModel", pageModel); } List<Job> jobs=jobDao.selectByPage(params); return jobs; } //實現HrmService介面的selectJobById方法 @Transactional(readOnly=true) @Override public Job selectJobById(Integer id){ return jobDao.selectById(id); } //實現HrmService介面的updateJob方法 @Transactional(readOnly=true) public void updateJob(Job job){ jobDao.update(job); } //實現HrmService介面的insertJob方法 @Transactional(readOnly=true) @Override public void insertJob(Job job){ jobDao.save(job); } //實現HrmService介面的deleteJob方法 @Transactional(readOnly=true) @Override public void deleteJob(Integer id){ jobDao.deleteById(id); } //實現HrmService介面的selectJobByJobName方法 @Transactional(readOnly=true) public Job selectJobByJobName(String jobName){ Job job=jobDao.selectJobByJobName(jobName); return job; } @Override public void deleteDocument(Integer id) { documentDao.deleteNotice(id); } @Override public void deleteNotice(Integer id) { noticeDao.deleteNotice(id); } @Override public void insertDocument(Document document) { documentDao.insert(document); } @Override public void insertNotice(Notice notice) { noticeDao.insertNotice(notice); } @Override public List<Dept> selectAll() { return deptDao.selectAll(); } @Override public List<Document> selectDocument(Document document, PageModel pageModel) { Map<String,Object> params=new HashMap<String,Object>(); params.put("document", document); int recordCount=documentDao.count(params); System.out.println("呼叫HrmServiceImpl類方法selectDocuemnt-->"); //設定記錄總數,從而可以計算出totalSize,繼而計算出實際的pageIndex pageModel.setRecordCount(recordCount); //更新pageIndex pageModel.updatePageIndex(); //更新記錄查詢位置 pageModel.setFirstLimitParam(); if(recordCount>0){ params.put("pageModel", pageModel); } List<Document> documents=documentDao.selectWhitParam(params); return documents; } @Override public Document selectDovumentById(Integer id) { return documentDao.selectDocument(id); } @Override public List<Notice> selectNotice(Notice notice, PageModel pageModel) { Map<String,Object> params=new HashMap<String,Object>(); params.put("notice", notice); int recordCount=noticeDao.count(params); System.out.println("呼叫HrmServiceImpl類方法selectNotice-->"); //設定記錄總數,從而可以計算出totalSize,繼而計算出實際的pageIndex pageModel.setRecordCount(recordCount); //更新pageIndex pageModel.updatePageIndex(); //更新記錄查詢位置 pageModel.setFirstLimitParam(); if(recordCount>0){ params.put("pageModel", pageModel); } List<Notice> notices=noticeDao.selectByPage(params); return notices; } @Override public Notice selectNoticeById(Integer id) { return noticeDao.selectById(id); } @Override public void updateDocument(Document document) { documentDao.update(document); } @Override public void updateNotice(Notice notice) { noticeDao.updateNoctice(notice); } }
該類是對HrmService介面的具體實現,每個方法通過呼叫DAO元件來實現具體系統的具體功能。業務邏輯元件與DAO元件通過Spring框架的依賴注入與IOC緊密連線在一起,去除了過去那種複雜、繁瑣的過程。
對其中幾個地方稍作解釋:
@Service("hrmService")
@Service註解的作用是將此類註釋成為Spring的Bean,它與applicationContext.xml檔案中的下列內容配合使用。
<!-- 掃描org.fkit.包下的java檔案,若有Spring的相關注解的類,則把這些類註冊為Spring的bean --> <context:component-scan base-package="org.fkit.hrm"/>
這種依賴注入的思維使得在Controller中對業務邏輯元件進行使用之前只需要自動注入該bean即可。
/**
* 自動注入hrmService
*/
@Autowired
@Qualifier("hrmService")
private HrmService hrmService
同樣的在HrmServiceImpl類中也有針對DAO元件的自動注入,即
/* * 自動注入持久層dao物件 */ @Autowired private UserDao userDao; @Autowired private DeptDao deptDao; @Autowired private DocumentDao documentDao; @Autowired private EmployeeDao employeeDao; @Autowired private JobDao jobDao; @Autowired private NoticeDao noticeDao;