SpringMVC를 기반으로 일반적인 CRUD 캡슐화 작업

8371 단어 분산 학습

목표: 주요 처리 리스트의 목록 전시, 증가, 삭제, 수정, 조회 등 조작의 봉인 처리. 
우리가 사용하는 myBiatis로 데이터베이스를 처리하는 것은 모두 플러그인을 통해 데이터베이스와 실체, 그리고 DAO가 자동으로 생성된 것이다. 그러면 우리는 DAO층이 모두 같은 방법이라는 것을 알 수 있다. 
서비스 층과 컨트롤러를 동시에 재편성할 때 많은 기능점이 중복된다.포장을 했습니다. 
주요 사고방식: 범주형을 통해DAO층에 대응하는 실체류를 제어한다.그리고 서비스와 Controller 층에 대해 추상 클래스로 작성합니다. @Autowired를 통해 등록할 때 순서에 따라 처리되기 때문입니다.
만약에 직접 재기류에 등록하면sprng은 어느 DAO를 등록해야 하는지 몰라요.그래서 이 두 종류는 추상적인 말을 해야 한다.그리고 하위 클래스에서 구체적인 등록 처리를 한다.당연하다
봉인하는 몇 가지 방법은 변동이 필요할 때 다시 쓰면 된다.구체적인 코드는 다음과 같습니다.
일반적인 DAO 형식은 다음과 같습니다.
  
public interface SimplenessDao {
	
	int deleteByPrimaryKey(BigDecimal medId);

    int insert(K k);

    int insertSelective(K k);

    K selectByPrimaryKey(BigDecimal medId);

    int updateByPrimaryKeySelective(K k);

    int updateByPrimaryKey(K k);
    
    //     
    List findList(Map map);
    
    //      
    Integer findListCount(Map map);
	
}

서비스 클래스, 저는 ISimpleness 서비스에 가입했습니다. 주로 규범과 습관에 사용되고 controller에 주입된 저는 Simpleness 서비스 Impl을 직접 사용했습니다.
public interface ISimplenessService {
	
	//     
	List findList(Map paramsMap);
	
	//     
	Integer findListCount(Map paramsMap);
	
	//      --    ajax  
	HttpAjaxResult  saveOrUpdate(K k,Integer id);
	
	//   id     
	K  findEntityByParams(Map paramsMap,Class clazz);
	
	//   id     
	HttpAjaxResult delByPrimKey(int id);
}
@SuppressWarnings("rawtypes")
public abstract class SimplenessServiceImpl implements ISimplenessService {

  
	public abstract SimplenessDao DaoHandler();

	
	@SuppressWarnings("unchecked")
	public K selectByPrimaryKey(BigDecimal medId) {

		return (K) DaoHandler().selectByPrimaryKey(medId);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List findList(Map paramsMap) {

		return DaoHandler().findList(paramsMap);
	}

	@SuppressWarnings("unchecked")
	@Override
	public Integer findListCount(Map paramsMap) {

		return DaoHandler().findListCount(paramsMap);
	}

	@SuppressWarnings("unchecked")
	@Override
	public HttpAjaxResult saveOrUpdate(K k, Integer id) {
		int count = 0;
		k = this.dataSupplementHandler(k,id);
		if (id == null || id == 0) {
			count = DaoHandler().insertSelective(k);
		} else {
			count = DaoHandler().updateByPrimaryKeySelective(k);
		}
		return this.ajaxBusiness(count);
	}
	
	/***
	 * 
	* @Title: dataSupplement 
	* @Description: TODO(               )         
	* @param @param k         
	* @return void         
	* @throws
	 */
	public K  dataSupplementHandler(K k,Integer id){
		
		
		return k;
	}
	
	
	
	

	@Override
	public HttpAjaxResult delByPrimKey(int id) {
		BigDecimal ids = new BigDecimal(id);
		int count = DaoHandler().deleteByPrimaryKey(ids);
		return this.ajaxBusiness(count);
	}

	/**
	 * 
	 * @Title: ajaxBusiness
	 * @Description: TODO(               ) ajax      
	 * @param @param count
	 * @param @return     
	 * @return HttpAjaxResult     
	 * @throws
	 */
	public HttpAjaxResult ajaxBusiness(int count) {
		HttpAjaxResult result = new HttpAjaxResult();
		if (count > 0) {
			result.setResultCode(200);
			result.setResultMsg("success");
		} else {
			result.setResultCode(400);
			result.setResultMsg("fail");
		}
		return result;
	}

	@SuppressWarnings("unchecked")
	public K findEntityByParams(Map paramsMap, Class clazz) {
		try {
			K k = null;
			if (paramsMap != null) {
				boolean flag = paramsMap.containsKey("id");
				if (flag) {
					int id = (int) paramsMap.get("id");
					if (id == 0) {
						//     。
						k = (K) clazz.newInstance();
					} else {
						BigDecimal decId = new BigDecimal(id);
						k = (K) DaoHandler().selectByPrimaryKey(decId);
					}
					return k;
				}
			}
			return k;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
}

controller 클래스 코드는 다음과 같습니다
@SuppressWarnings("rawtypes")
public abstract class SimplenessController extends BaseController{
	  
	//     
	public abstract SimplenessServiceImpl  serviceImplHandler();
	/***
	 * 
	* @Title: setUpUrlPrefix 
	* @Description: TODO(               )        URL
	* @param @return         
	* @return String         
	* @throws
	 */
	public abstract String  setUpUrlPrefix();
	
	
	/***
	 * 
	* @Title: listView 
	* @Description: TODO(               )         
	* @param @return         
	* @return ModelAndView         
	* @throws
	 */
	@RequestMapping(value = "/listView")
	public  ModelAndView listView(){
		ModelAndView  modelView = this.pageForward(this.setUpUrlPrefix()+"/list"); 
		return  modelView;
	};
	
	
	/***
	 * 
	* @Title: listData 
	* @Description: TODO(               )  ajax  list     
	* @param @param pageBean
	* @param @throws Exception         
	* @return void         
	* @throws
	 */
	@RequestMapping(value = "/listData")
	@ResponseBody
	public void listData(PageBean pageBean,K k) throws Exception{
		Map map = new HashMap();
		map = this.addParamsBusiness(k,map);
		List dataList = serviceImplHandler().findList(map);
	    int  pageCount = serviceImplHandler().findListCount(map);
	    listDataResorce(map,pageBean,dataList,pageCount);
	};
	
	
	@SuppressWarnings("unchecked")
	public void  listDataResorce(Map map,PageBean pageBean,List dataList,int pageCount) throws Exception{
		map.put("pageBean", pageBean);
	    ResPageBean resPageBean = new ResPageBean(pageBean.getsEcho(), pageCount,pageCount);
		resPageBean.setAaData(dataList);
		this.outputStr("yyyy-MM-dd HH:mm:ss", resPageBean);
	}
	 
	
	/**
	 * 
	* @Title: addParamsBusiness 
	* @Description: TODO(               )          。  
	* @param @param map
	* @param @return         
	* @return Map         
	* @throws
	 */
    public Map addParamsBusiness(K k,Map map){
		
    	
		return map;
	}
	
    
     //     Class  ,           。 (            )
     public abstract Class setUpClass();
    
    /***
     * 
    * @Title: addView 
    * @Description: TODO(               )               
    * @param @param id
    * @param @return         
    * @return ModelAndView         
    * @throws
     */
    @RequestMapping(value="/addOrUpdate/{id}")
	public ModelAndView addOrUpdate(@PathVariable("id") Integer id){
    	Map map = new HashMap();
    	map.put("id", id);
    	K k = (K) serviceImplHandler().findEntityByParams(map,this.setUpClass());
		ModelAndView  modelView = this.pageForward(this.setUpUrlPrefix()+"/addOrUpdate","baseObject",k); 
		return  modelView;
    }
	/**
	 * 
	* @Title: saveOrUpdate 
	* @Description: TODO(               )   ajax       
	* @param @param k
	* @param @return         
	* @return HttpAjaxResult         
	* @throws
	 */
	@RequestMapping(value="/saveOrUpdateAjax/{id}")
	@ResponseBody
	public HttpAjaxResult saveOrUpdateAjax(K k,@PathVariable("id") Integer id){
    	HttpAjaxResult ajaxResult = serviceImplHandler().saveOrUpdate(k,id);
		return  ajaxResult;
    }
	 
    /***
     * 
    * @Title: del 
    * @Description: TODO(               )   ajax      
    * @param @param id
    * @param @return         
    * @return HttpAjaxResult         
    * @throws
     */
    
   	@RequestMapping(value="/del/{id}")
   	@ResponseBody
	public  HttpAjaxResult del(@PathVariable("id") Integer id){
    	HttpAjaxResult ajaxResult = serviceImplHandler().delByPrimKey(id);
		return  ajaxResult;
    };
}

HttpAjaxResult 이 클래스는 주로 Ajax의 복귀 클래스 처리를 제어하는 데 사용됩니다
public class HttpAjaxResult {

	private int resultCode;
	private String resultMsg;
	public int getResultCode() {
		return resultCode;
	}
	public void setResultCode(int resultCode) {
		this.resultCode = resultCode;
	}
	public String getResultMsg() {
		return resultMsg;
	}
	public void setResultMsg(String resultMsg) {
		this.resultMsg = resultMsg;
	}
	
	
	
	
}

또한 범용 클래스를 다시 정의할 때, 때로는 대상의 범위 처리를 제어하기 위해 T extends BaseObject를 통해 더 좋은 코드 규범 처리를 할 수 있습니다. 
기본 코드는 위에서 처리한다.

좋은 웹페이지 즐겨찾기