public class IbatisExecutor {
   private static DaoManager daoManager;
     public static void main(String[] args) throws Exception {
        try {
            Reader reader = Resources.getResourceAsReader("dao.xml"); 
            daoManager = DaoManagerBuilder.buildDaoManager(reader);
            ShainDAO dao = 
                   (ShainDAO) daoManager.getDao(ShainDAO.class);
            Shain shain = new Shain();
            shain.setShainId(111);
            // 検索処理(JOIN)
            shain = dao.selectAllByPrimaryKey(shain);
            System.out.println("-----検索(JOIN)結果-----");
            System.out.println("shainId = " + shain.getShainId());
            System.out.println("shainName = " + shain.getShainName());
            System.out.println("bushoName = " 
                    + shain.getBusho().getBushoName());
            System.out.println("\n");
            // トランザクション処理開始
            daoManager.startTransaction(); 
            // 挿入処理
            BushoDAO bushoDAO = 
                (BushoDAO) daoManager.getDao(BushoDAO.class);
            Busho busho = new Busho();
            busho.setBushoId(2);
            busho.setBushoName("営業部(iBATIS)");
            busho.setExtensionNum(2345);
            bushoDAO.insert(busho);
            dispResult(bushoDAO, busho, "挿入結果");
            // 更新処
            busho.setBushoId(2);
            busho.setExtensionNum(3456);
            bushoDAO.updateByPrimaryKey(busho);
            dispResult(bushoDAO, busho, "更新結果");

            // 削除処理
            busho.setBushoId(2);
            bushoDAO.deleteByPrimaryKey(busho);
            dispResult(bushoDAO, busho, "削除結果");

            // コミット
            daoManager.commitTransaction(); 

        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            try {
                daoManager.endTransaction(); 
            } catch(Exception e) {
                e.printStackTrace();
            }
        }

    }