mybatis 3.0 oracleストレージ・プロシージャの呼び出し


昨日、プロジェクトマネージャから需要があり、すべてのビジネスロジックがストレージプロセスに書かれていました.
理由は次のとおりです.
1.今後、業務上の変更が発生した場合は、プロジェクトを動かさずにストレージプロセスを直接変更します.
2.javaでビジネスロジックを判断するには、データベースと何度も対話する必要がありますが、ストレージ・プロシージャを使用すると、1回に減らすことができ、優れたストレージ・プロシージャで実行効率が高くなります.
しかし、個人的には、ストレージ機能を使用すると、データベースへの依存が強すぎて、プロジェクトとデータベースの結合度が向上し、プロジェクトがデータベースを交換すると、すべてのストレージ・プロシージャが書き換えられると思います.私のレベルでは、ログイン検証から返されるプロンプト情報を含むすべてのビジネスロジックをストレージ・プロシージャに置き換えたプロジェクトを見たことがあります.
ちょっと問題が外れたようで、本題に戻ります.
mybatis 3.0はoracleストレージ・プロシージャを呼び出します.ここでは注意すべきことだけを言います.
<select id="isMember" statementType="CALLABLE" parameterType="com.sf.emp.web.services.InterfaceEntity">
	 {call emp_is_member.emp_isMember(#{mobileNumber,mode=IN,jdbcType=DECIMAL},#{mobileUserId,mode=OUT,jdbcType=DECIMAL},#{yys,mode=OUT,jdbcType=DECIMAL},#{areaId,mode=OUT,jdbcType=DECIMAL},#{memberGrade,mode=OUT,jdbcType=DECIMAL},#{isMember,mode=OUT,jdbcType=INTEGER})}
	</select>

 statementTypeのCALLABLEは、このsqlをストレージプロセスparameterTypeと表記するためのパラメータです.いくつかの資料を見て、一部の同志はここでparameterTypeを書いていませんが、成功しました.しかし、彼らはmapを伝えています.ここでは、厳密にしておくといいです.伝参があると思ったらresultMap回参があるはずだったがjavaでこう書いたとき:
/**
	 *               
	 * @param iphone    
	 */
	public InterfaceEntity isMember(String mobileUser){
		InterfaceEntity ie = new InterfaceEntity();
		ie.setMobileNumber(mobileUser);
		return  skToEmpDao.getSqlSession().selectOne("SkToEmpMapper.isMember",ie);
			}

 戻ってくるのはnullですが、後でよく考えてみると、ストレージ・プロシージャは値だけを伝えて返さないので、戻ってくるのは関数なので、私たちが受け入れるべきものは、私たちが彼に伝えたパラメータ、つまりストレージ・プロシージャを呼び出した後に書くことができます.
/**
	 *               
	 * @param iphone    
	 */
	public InterfaceEntity isMember(String mobileUser){
		InterfaceEntity ie = new InterfaceEntity();
		ie.setMobileNumber(mobileUser);
		skToEmpDao.getSqlSession().selectOne("SkToEmpMapper.isMember",ie);
		return ie;
	}

 言語組織があまりよくないので、ご了承ください.転載は出典を明記してください
  http://shen84121062.iteye.com/blog/1213857