開源ORM工具,請高手指點

cloud21發表於2009-07-21
利用閒暇時間寫了一個ORM工具,例子程式碼如下。

import com.prime.orm.annotations.Column;
import com.prime.orm.annotations.GeneratedValue;
import com.prime.orm.annotations.GenerationType;
import com.prime.orm.annotations.Id;
import com.prime.orm.annotations.Table;
import com.prime.orm.annotations.Type;

/**
 * * * 專案名稱:orm * 類名稱:User * 類描述:實體類 * 建立人:YinHao * 建立時間:2009-7-20 下午07:58:29 *
 * 修改人:Administrator * 修改時間:2009-7-20 下午07:58:29 * 修改備註: * @version *
 */
@Table("tb_user")
// 對應資料庫表名稱
public class User {

	/**
	 * @Id--->主鍵ID
	 * @GneratedValue--->主鍵生成器
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	long id;

	/**
	 * ip---->基本欄位
	 * 
	 * @Column 為 ORM 欄位配置資訊 name--->欄位名稱,insertable--->是否參與新增,unique--->欄位是否唯一
	 */
	@Column(name = "ip", length = 21, nullable = true, insertable = true, unique = false)
	byte ip = 1;

	/**
	 * name--->基本欄位,length--->欄位長度,nullable--->是否允許為空,updatable--->是否允參與更新
	 */
	@Column(name = "name", length = 21, nullable = true, updatable = true, unique = false)
	String name = "尹浩";

	/**
	 * secret--->基本欄位
	 */
	@Column(name = "secret", length = 22)
	String secret = "prime";

	/**
	 * * 建立一個新的例項 User. * * 預設建構函式必須宣告
	 */
	public User() {

	}

	public User(String name) {
		this.name = name;
	}

	public User(String name, String secret) {
		this.name = name;
		this.secret = secret;
	}

	

}
<p class="indent">



主測試類

import java.util.List;

import com.prime.orm.ORM;
import com.prime.orm.Predicate;

/**
 * * * 專案名稱:orm * 類名稱:MainTest * 類描述:測試類 * 建立人:cloud * 建立時間:2009-7-15 上午10:48:32
 * * 修改人:Administrator * 修改時間:2009-7-15 上午10:48:32 * 修改備註: * @version *
 */
public class MainTest {

	/**
	 * * main(這裡用一句話描述這個方法的作用) * TODO(這裡描述這個方法適用條件 – 可選) * TODO(這裡描述這個方法的執行流程 –
	 * 可選) * TODO(這裡描述這個方法的使用方法 – 可選) * TODO(這裡描述這個方法的注意事項 – 可選) * @param name * @param @return
	 * 設定檔案 * @return String DOM物件 * @Exception 異常物件 * @since
	 * CodingExample Ver(編碼範例檢視) 1.1
	 */
	public static void main(String[] args) {
		/**
		 * 開啟日誌記錄功能
		 */
		ORM.openLog();
		ORM.setBriefMsg("操作員:cloud");
		/**
		 * 開啟事務
		 */
		ORM.beginTransactioin();
		/**
		 * 1、資料表物理操作| 根據實體類生成資料表結構 |根據實體類刪除資料表記錄
		 */
		ORM.dropTable(User.class);
		ORM.createTable(User.class);
		ORM.commit();

		/**
		 * 例項化實體類
		 */

		User u1 = new User("cloud", "prime");
		User u2 = null;

		/**
		 * 對映實體到資料庫
		 */
		ORM.beginTransactioin();
		ORM.save(u1);
		ORM.commit();

		/**
		 * 透過新例項具有的查詢條件,從資料庫中載入物件到u2
		 */
		ORM.beginTransactioin();
		u2 = (User) ORM.search(new User("cloud"));
		System.out.println("載入新物件後的密碼為:" + u2.getSecret());
		u2.setName("NewName");
		u2.setId(new Long(0));
		ORM.commit();
		ORM.save(u2);

		/**
		 * // * 提供分頁功能 //
		 */

		ORM.setTransactioin(true);
		List ls = ORM.load(User.class, 1, 2);
		System.out.println("例項總數為:" + ls.size());

		/**
		 * 提供批處理功能,此處為批次刪除根據查詢條件
		 */
		List<User> l = ORM.search(new Predicate(User.class) {
			public boolean match(User u) {
				if ("cloud".equals(u.getName())
						|| "prime".equals(u.getSecret())) {
					System.out.println("刪除存在記錄為=" + u.getId() + u.getName()
							+ u.getSecret());
					ORM.remove(u);

					return true;
				} else {
					return false;
				}
			}

		});
	}
}

<p class="indent">

相關文章