JAvaバックグラウンド開発プロセス

13398 ワード

この文章は私が冷宫に入って2ヶ月ぐらいのiOS开発を基础にして、以前iOSプロジェクトが停止したため、バックグラウンド开発に転勤されて、2ヶ月の中でもjava、sql、js、jspについて多くの内容を学びました.同僚のご指导に感谢します.
eclipse(プログラミングツール)+navicat(データベース)+zookeeper(サービスコーディネート)=開発環境、大まかな開発プロセスは以下の通りです.
1、データベース構築表
2、新しいエンティティークラス
3、Daoを新規作成し、Daoをテストするには、Mapper(xml)を構成する必要がある
4、新しいサービスインタフェース(定義インタフェース)
5、サービスインタフェースの実現とテスト、dubbo登録サービス生産者を配置する必要がある
6、controllerを新設し、dubbo登録サービス消費者を配置する必要がある
7、フロントエンドページ(js、jsp)
8、サービス開始とデバッグ
1、データベース構築表
1)一般的に、テーブル構造にintタイプのidをテーブルのプライマリ・キーとして追加し、自己成長に設定する.
2)フィールドの長さ、nullにできるかどうか、注意してください.
2、新しいエンティティークラス
package com.clt.wsxc.commons.domain.mp;

import java.util.Date;

import com.alibaba.fastjson.annotation.JSONField;
import com.clt.wsxc.commons.domain.Pagination;

/**
 *@Description:          
 *@Author:YXQ
 *@Since:2015 6 16 
 */
public class WechatBind extends Pagination{
	
	private static final long serialVersionUID = 8262554316156565954L;

	//   id
	private int bindId;
	
	//    1001:   ,1002:  
	private String type;
	
	private String typeStr;
	
	//       
	private String number;
	
	//       
	private String name;
	
	//       openid
	private String openId;
	
	//         0    1   
	private int haveConsumed;
	
	private String haveConsumedStr;
	
	//      
	private String consumerName;
	
	//      
	private String consumerPhone;
	
	//     
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
	private Date createTime;

	public int getBindId() {
		return bindId;
	}

	public void setBindId(int bindId) {
		this.bindId = bindId;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public String getTypeStr() {
		int i = Integer.valueOf(this.type);
		if(i == 1001){
			typeStr = "  ";
		}else if(i == 1002){
			typeStr = "  ";
		}else{
			typeStr = "  ";
		}
		return typeStr;
	}

	public void setTypeStr(String typeStr) {
		this.typeStr = typeStr;
	}

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getOpenId() {
		return openId;
	}

	public void setOpenId(String openId) {
		this.openId = openId;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	public int getHaveConsumed() {
		return haveConsumed;
	}

	public void setHaveConsumed(int haveConsumed) {
		this.haveConsumed = haveConsumed;
	}

	public String getHaveConsumedStr() {
		if(this.haveConsumed == 0){
			haveConsumedStr = "    ";
		}else{
			haveConsumedStr = "   ";
		}
		return haveConsumedStr;
	}

	public void setHaveConsumedStr(String haveConsumedStr) {
		this.haveConsumedStr = haveConsumedStr;
	}

	public String getConsumerName() {
		return consumerName;
	}

	public void setConsumerName(String consumerName) {
		this.consumerName = consumerName;
	}

	public String getConsumerPhone() {
		return consumerPhone;
	}

	public void setConsumerPhone(String consumerPhone) {
		this.consumerPhone = consumerPhone;
	}
	
	
}

1)エンティティクラスは一般的にページングベースクラスpaginationを継承する(カスタムページングベースクラスは、パラメータを渡すときにこのベースクラスを使用でき、戻るときにPaginationEntityを使用してitemsにオブジェクトを置く必要がある)
2)serialVersionUID(JavaクラスのIDに相当し、主にバージョン管理に使用される.Javaのシーケンス化メカニズムは、実行時にクラスのserialVersionUIDを判断することによってバージョン整合性を検証し、バージョンアップ時に逆シーケンス化してもオブジェクトの一意性を維持する.
3)エンティティクラスのフィールドをプライベートに設定し、オープンgetとsetメソッドのみを提供します.これは、エンティティクラスのセキュリティを向上させるためです.
4)Dateタイプのフィールドは,@JSOnField(format="yyyy-MM-dd HH:mm:ss")で出力をフォーマットする.
3、Daoを新規作成し、Daoをテストするには、Mapper(xml)を構成する必要がある
package com.clt.wsxc.dao.mp;

import java.util.List;

import org.springframework.stereotype.Repository;

import com.clt.wsxc.commons.domain.PaginationEntity;
import com.clt.wsxc.commons.domain.mp.WechatBind;
import com.clt.wsxc.dao.base.BaseDao;
/**
 *@Description:       Dao 
 *@Author:YXQ
 *@Since:2015 6 16 
 */
@Repository
public class WechatBindDao extends BaseDao{

	@Override
	public void insert(WechatBind domain) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void update(WechatBind domain) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void delete(WechatBind domain) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public WechatBind selectOne(WechatBind domain) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List selectList(WechatBind domain) {
		// TODO Auto-generated method stub
		return getSqlSession().selectList("mp.WechatBindMapper.selectList", domain);
	}
	
	//     
    public PaginationEntity selectPage(WechatBind domain) {
        List list = selectList(domain);
        domain.setIsPaging(true);
        int count = getSqlSession().selectOne("mp.WechatBindMapper.selectCount",
        				domain);
        return new PaginationEntity(count, list, domain);
    }

}

// Dao
1)Spring注記:@Repositoryデータ・アクセス・レイヤ(DAOレイヤ)のクラスをSpring Beanとして識別するために使用されます.この注記をDAOクラスにマークするだけです.
2)getSqlSession()を使用してsql文を宣言する



    
        
        
        
        
        
    
    
    
    
    
    

4、新しいサービスインタフェース(定義インタフェース)
package com.clt.wsxc.api.mp;

import com.clt.wsxc.commons.domain.PaginationEntity;
import com.clt.wsxc.commons.domain.mp.WechatBind;
import com.clt.wsxc.commons.exception.extend.BizException;
import com.clt.wsxc.commons.exception.extend.SystemException;

/**
 *@Description:         
 *@Author:YXQ
 *@Since:2015 6 16 
 */
public interface WechatBindService {
	//   
	PaginationEntity WechatBindPagination(WechatBind wechatBind)throws BizException,SystemException;
}

1)キーワードはインターネットで,メソッドを明示するだけである.
5、サービスインタフェースの実現とテスト、dubbo登録サービス生産者を配置する必要がある
package com.clt.wsxc.provider.mp.service;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;

import com.clt.wsxc.api.mp.WechatBindService;
import com.clt.wsxc.commons.domain.PaginationEntity;
import com.clt.wsxc.commons.domain.mp.WechatBind;
import com.clt.wsxc.commons.exception.extend.BizException;
import com.clt.wsxc.commons.exception.extend.SystemException;
import com.clt.wsxc.commons.exception.message.InternalCode;
import com.clt.wsxc.commons.exception.message.SystemExceptionMessage;
import com.clt.wsxc.dao.mp.WechatBindDao;
/**
 *@Description:           
 *@Author:YXQ
 *@Since:2015 6 16 
 */
public class WechatBindServiceImpl implements WechatBindService{
	//       ,package001,java  020
    final String INTERNAL_CODE = "001.020";
	
    private Logger log= LoggerFactory.getLogger (WechatBindServiceImpl.class);
    
    @Autowired
    private WechatBindDao wechatBindDao;
    
	@Override
	public PaginationEntity WechatBindPagination(WechatBind wechatBind) throws BizException, SystemException {
		PaginationEntity equPagination = null;
		try {
            equPagination = wechatBindDao.selectPage (wechatBind);
        } catch(DataAccessException e) {
            e.printStackTrace();
            log.error(e.toString());
            throw new SystemException(SystemExceptionMessage.SYSTEM_ERROR, InternalCode.MAN_SERVICE+INTERNAL_CODE+"01", null);
        } catch (Exception e) {
            e.printStackTrace();
            log.error(e.toString());
            throw new SystemException(SystemExceptionMessage.SYSTEM_ERROR, InternalCode.MAN_SERVICE+INTERNAL_CODE+"02", null);
        }
		return equPagination;
	}

}




    


1)キーワードimplements、明記されたインタフェースクラスを含む
6、controllerを新設し、dubbo登録サービス消費者を配置する必要がある
package com.clt.wsxc.mvc.mp.controller.wechatBind;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.clt.wsxc.api.mp.WechatBindService;
import com.clt.wsxc.commons.domain.PaginationEntity;
import com.clt.wsxc.commons.domain.mp.WechatBind;
import com.clt.wsxc.commons.mvc.controller.BaseController;
/**
 *@Description:          
 *@Author:YXQ
 *@Since:2015 6 16 
 */
@Controller
@RequestMapping("/wechatBind")
public class WechatBindController extends BaseController{
	@Autowired
	private WechatBindService wechatBindService;
	
	@ResponseBody
	@RequestMapping("/page")
	public PaginationEntity getParamPage(WechatBind wechatBind) throws Exception {
		//   
		wechatBind.setSortName("name");
		return wechatBindService.WechatBindPagination(wechatBind);
	}
}


		
	
	
	


    


1)@controller注記はコントローラとして表示
2)@RequestMappingはパスマッピングを要求し、あるcontrollerのクラスレベルにマークが付いている場合、このようなパスにアクセスする方法に構成されたパスが追加されることを示します.最も一般的なのは、あるリクエストの処理を受け入れるためにどの具体的な方法が受け入れられるかを示す方法に寸法を付けることです.
3)BaseControllerに引き継ぎ、エラーログと例外処理を統一する
7、フロントエンドページ(js、jsp)
本人jsは特に得意ではないので、あまり説明しません.
8、サービス開始とデバッグ
ローカルのWebサイトを開き、書かれたページが正常に表示されるかどうかを確認します.
追加削除や変更などの方法(実装されている場合)を試して、異常が投げ出されるかどうかを確認します.