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については、Java用のHibernate向けながら日本語マニュアルも用意されている。細部で差異こそあるものの、NHibernateの概要を理解するうえでは十分参考になるはずだ。本稿と併せて活用していただきたい。
Insider.NET 記事ランキング
本日
月間