Dorado 9 : 11.3.2 准备后台服务

在初级教程中我们已经实现了用户的saveAll方法用以用户对象的持久化,因此我们只需要增加getEmployeeByUserName这个方法即可。

步骤1:双击打开com.bstek.dorado.sample.standardlesson.service.EmployeeService.java,在其中增加getEmployeeByUserName方法,最终代码如下:

package com.bstek.dorado.sample.standardlesson.service;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import org.hibernate.annotations.common.util.StringHelper;
import org.hibernate.criterion.DetachedCriteria;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.bstek.dorado.annotation.DataProvider;
import com.bstek.dorado.annotation.DataResolver;
import com.bstek.dorado.data.provider.Criteria;
import com.bstek.dorado.data.provider.Page;
import com.bstek.dorado.hibernate.HibernateUtils;
import com.bstek.dorado.sample.standardlesson.dao.SlEmployeeDao;
import com.bstek.dorado.sample.standardlesson.entity.SlEmployee;
@Component
public class EmployeeService {
    @Resource
    private SlEmployeeDao slEmployeeDao;
     
    @DataProvider
    public Collection<SlEmployee> getAll(){
        return slEmployeeDao.getAll();
    }
     
    @DataProvider
    public void getAllForPage(Page<SlEmployee> page){
        slEmployeeDao.getAll(page);
    }
     
    @DataProvider
    public void getAllForFilter(Page<SlEmployee> page, Criteria criteria) throws Exception{
        DetachedCriteria detachedCriteria = DetachedCriteria.forClass(SlEmployee.class);
        if (criteria != null){
            slEmployeeDao.find(page, HibernateUtils.createFilter(detachedCriteria, criteria));
        }else{
            slEmployeeDao.getAll(page);
        }
    }
     
    @DataProvider
    public void queryForCondition(Page<SlEmployee> page, Map<String, Object> params) {
        if (null != params) {
            String employeeCode = (String)params.get("employeeCode");
            String employeeName = (String) params.get("employeeName");
            String userName = (String)params.get("userName");
            String email = (String)params.get("email");
            String phone = (String)params.get("phone");
            String mobile = (String)params.get("mobile");
            String position = (String) params.get("position");
             
            String whereCase = "";
            if (StringHelper.isNotEmpty(employeeCode)) {
                whereCase += " AND employeeCode like '%" + employeeCode + "%' ";
            }
             
            if (StringHelper.isNotEmpty(employeeName)) {
                whereCase += " AND employeeName like '%" + employeeName + "%' ";
            }
             
            if (StringHelper.isNotEmpty(userName)) {
                whereCase += " AND userName like '%" + userName + "%' ";
            }
             
            if (StringHelper.isNotEmpty(email)) {
                whereCase += " AND email like '%" + email + "%' ";
            }
             
            if (StringHelper.isNotEmpty(phone)) {
                whereCase += " AND phone like '%" + phone + "%' ";
            }
             
            if (StringHelper.isNotEmpty(mobile)) {
                whereCase += " AND mobile like '%" + mobile + "%' ";
            }
             
            if (StringHelper.isNotEmpty(position)) {
                whereCase += " AND position like '%" + position + "%' ";
            }
            slEmployeeDao.find(page, " from SlEmployee where 1=1 " + whereCase);
        } else
            slEmployeeDao.getAll(page);
    }
    
    @DataResolver
    @Transactional
    public void saveAll(Collection<SlEmployee> slEmployees){
        slEmployeeDao.persistEntities(slEmployees);
    }
    
    @DataProvider
    public Collection<SlEmployee> getEmployeeByUserName(String userName){
        Map param = new HashMap();
        if(StringHelper.isNotEmpty(userName)){
            param.put("userName", userName);
            return slEmployeeDao.find("from SlEmployee where userName = :userName",param);
        }else{
            return null;
        }
    }
}

我们可以发现getEmployeeByUserName方法很简单,仅仅就是根据传入的用户名获取数据库中的用户对象。