MyBatisとSpring,commons-dbcpの統合開発(三)


マッパーを通ります.xmlのSQL操作のidはデータテーブルを操作して、これはとても便利ではありません
Org_Type org=sess.selectOne("aps.tables.org_type.selectByID",20);
sess.update("aps.tables.org_type.update", org);
この文字列が間違っていれば、コンパイルは間違って報告されず、多くのIDがあり、開発者もこんなに多くのIDを覚えていない.
では、より良いパッケージが必要です.
クラスではなくJavaのinterfaceでDAOをカプセル化する方法について話します.
ちょっと見てtables.org_type.selectByIDは、パッケージと見なすことができます.インタフェース名メソッド名
では、このインタフェースは次のようになります.xmlの4つの操作はすべてカプセル化されています.

package aps.tables;
import MybatisTest.domain.Org_Type;
public interface org_type {
    Org_Type selectByID(int id);
    int delete(int id);
    int update(Org_Type type);
    int insert(Org_Type type);
}

具体的に使うときは、簡単で間違いなく、インターフェースの方法にJAVADOCコメントを書くことができ、使いやすいです.
org_type typedao=sess.getMapper(org_type.class);
Org_Type org=typedao.selectByID(20);
typedao.update(org);
ここで、トランザクションを使用して一貫性を保つにはどうすればいいですか?
コンテナトランザクションを使用しない場合は、最下位のJDBCトランザクションを使用して完了できます.
次のようになります.
session.getConnection().setAutoCommit(false);//事務を開いたら、commitがなければ提出されません.
try{
......
session.commit();
}
catch(Exception e)
{
   try(  session.rollback(); )catch(Exception ee){}
}
finally{
  session.close();
}