特集

ASP.NETで実践するO/Rマッピング(iBATIS.NET編)

山田 祥寛(http://www.wings.msn.to/
2005/10/08

Page1 Page2 Page3

iBATIS.NETによるデータ登録

 次に、iBATIS.NETを使ったデータの登録を行ってみよう。前項の内容を理解できていれば、データの登録は極めて直感的に実現できる。

 以下のサンプル・コードは、ユーザーから入力された値をbooksテーブルに新規登録するためのWebフォームの例だ。

<%@ Page ContentType="text/html" Language="C#" %>
<%@ Import Namespace="System.Collections" %>
<%@ Import Namespace="IBatisNet.DataMapper" %>
<%@ Import Namespace="Com.Msn.Wings" %>
<script runat="Server">

// [登録]ボタンをクリックしたタイミングで実行
public void btnSubmit_Click(Object sender, EventArgs e) {

  // Bookオブジェクトの各プロパティに入力された値をセット
  Book book = new Book();
  book.Isbn = txtIsbn.Text;
  book.Title = txtTitle.Text;
  book.Price = Int32.Parse(txtPrice.Text);
  book.Publish = txtPublish.Text;
  book.Published = DateTime.Parse(txtPublished.Text);

  // マッピング・ファイルから該当するクエリを取得し、

  // Bookオブジェクトの内容を割り当てたうえで発行
  Mapper.Instance().Insert("setBookInfo", book);
}

</script>
<html>
<head>
<title>iBATIS.NETによるデータ登録</title>
</head>
<body>
<form runat="Server">
  <table border="0">
    <tr>
      <th align="right">ISBNコード:</th>
      <td><asp:TextBox id="txtIsbn"
            runat="Server" Columns="20" /></td>
    </tr>
    <tr>
      <th align="right">書名:</th>
      <td><asp:TextBox id="txtTitle"
            runat="Server" Columns="40" /></td>
    </tr>
    <tr>
      <th align="right">価格:</th>
      <td><asp:TextBox id="txtPrice"
            runat="Server" Columns="5" />円</td>
    </tr>
    <tr>
      <th align="right">出版社:</th>
      <td><asp:TextBox id="txtPublish"
            runat="Server" Columns="15" /></td>
    </tr>
    <tr>
      <th align="right">配本日:</th>
      <td><asp:TextBox id="txtPublished"
            runat="Server" Columns="15" /></td>
    </tr>
    <tr>
      <td colspan="2">
        <asp:Button id="btnSubmit" runat="Server"
          Text="登録" OnClick="btnSubmit_Click" />
      </td>
    </tr>
  </table>
</form>
</body>
</html>
<%@ Page ContentType="text/html" Language="VB" %>
<%@ Import Namespace="System.Collections" %>
<%@ Import Namespace="IBatisNet.DataMapper" %>
<%@ Import Namespace="Com.Msn.Wings" %>
<script runat="Server">

' [登録]ボタンをクリックしたタイミングで実行
Public Sub btnSubmit_Click(sender As Object, e As EventArgs)

  ' Bookオブジェクトの各プロパティに入力された値をセット
  Dim book As New Book()
  book.Isbn = txtIsbn.Text
  book.Title = txtTitle.Text
  book.Price = Int32.Parse(txtPrice.Text)
  book.Publish = txtPublish.Text
  book.Published = DateTime.Parse(txtPublished.Text)

  ' マッピング・ファイルから該当するクエリを取得し、
  ' Bookオブジェクトの内容を割り当てたうえで発行
  Mapper.Instance().Insert("setBookInfo", book)
End Sub

</script>
<html>
<head>
<title>iBATIS.NETによるデータ登録</title>
</head>
<body>
<form runat="Server">
  <table border="0">
    <tr>
      <th align="right">ISBNコード:</th>
      <td><asp:TextBox id="txtIsbn"
            runat="Server" Columns="20" /></td>
    </tr>
    <tr>
      <th align="right">書名:</th>
      <td><asp:TextBox id="txtTitle"
            runat="Server" Columns="40" /></td>
    </tr>
    <tr>
      <th align="right">価格:</th>
      <td><asp:TextBox id="txtPrice"
            runat="Server" Columns="5" />円</td>
    </tr>
    <tr>
      <th align="right">出版社:</th>
      <td><asp:TextBox id="txtPublish"
            runat="Server" Columns="15" /></td>
    </tr>
    <tr>
      <th align="right">配本日:</th>
      <td><asp:TextBox id="txtPublished"
            runat="Server" Columns="15" /></td>
    </tr>
    <tr>
      <td colspan="2">
        <asp:Button id="btnSubmit" runat="Server"
          Text="登録" OnClick="btnSubmit_Click" />
      </td>
    </tr>
  </table>
</form>
</body>
</html>
iBATIS.NETを利用してデータ登録を行うサンプル・プログラム
(上:C#版「ibatis_input_cs.aspx」、下:VB.NET版「ibatis_input_vb.aspx」)

 データの登録を行うには、あらかじめ永続化クラスBookの対応する各プロパティに入力値をセットしておき、これをSqlMapperオブジェクトのInsertメソッドでセットするだけだ。先述したように、これによってBookオブジェクトの各プロパティ値が、自動的に対応するプレイスホルダにセットされる。

 検索処理の場合と同様、コード側からはSQLをまったく意識せずにオブジェクトの操作のみでデータの操作が可能になることがお分かりいただけるだろう。

 以上を理解したら、さっそくサンプルを実行してみよう。前回のNHibernate編の例と同様、入力された書籍情報がデータベースに反映されていれば成功だ。

 ちなみに、更新や削除処理を行う場合も、InsertメソッドをUpdate/Deleteメソッドに置き換えるだけで、後はほとんど同じ要領で行うことができる。特筆すべき点は特にないので本稿では割愛するが、余力のある方はぜひともご自分の環境で試してみていただきたい。

 以上、2回にわたり.NET Framework環境で利用できるO/Rマッピング・ツールとして、代表的なNHibernateとiBATIS.NETという2つのオープンソース製品について解説してきた。

 本特集は導入記事であり、もちろん、それぞれのツールはいずれも膨大な機能を提供している。興味をお持ちの方は、ぜひ、以下のドキュメントを一読しておくことをお勧めする。

製品名 ドキュメント
NHibernate NHibernate Documentation
HIBERNATE - Relational Persistence for Idiomatic Java(日本語)
iBASIS.NET iBATIS Downloads
iBASIS.NETリファレンス・マニュアル
NHibernate、iBATIS.NETのオンライン参考資料

 特にNHibernateについては、Java用のHibernate向けながら日本語マニュアルも用意されている。細部で差異こそあるものの、NHibernateの概要を理解するうえでは十分参考になるはずだ。本稿と併せて活用していただきたい。End of Article

 

 INDEX
  [特集] ASP.NETで実践するO/Rマッピング(iBATIS.NET編)
    1.iBATIS.NETのインストールと環境設定
    2. iBATIS.NET経由でデータベースを検索する
  3. iBATIS.NETによるデータ登録
 


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間